'n' in pdb moves me inside of the pdb.set_

2019-02-21 19:08发布

问题:

I'm trying to learn pdb using this tutorial referenced from another stackoverflow question, and I'm on the 3rd step of the Getting Started section.

In [12]: %paste
# epdb1.py -- experiment with the Python debugger, pdb
import pdb
a = "aaa"
pdb.set_trace()
b = "bbb"
c = "ccc"
final = a + b + c
print final
## -- End pasted text --
--Return--
> <ipython-input-12-48afa1c7ad72>(4)<module>()->None
-> pdb.set_trace()


(Pdb) l
  1     # epdb1.py -- experiment with the Python debugger, pdb
  2     import pdb
  3     a = "aaa"
  4  -> pdb.set_trace()
  5     b = "bbb"
  6     c = "ccc"
  7     final = a + b + c
  8     print final
[EOF]


(Pdb) n
> /Users/jg/anaconda/lib/python2.7/site-packages/IPython/core/interactiveshell.py(3038)run_code()
-> sys.excepthook = old_excepthook
(Pdb) l
3033                    self.hooks.pre_run_code_hook()
3034                    #rprint('Running code', repr(code_obj)) # dbg
3035                    exec(code_obj, self.user_global_ns, self.user_ns)
3036                finally:
3037                    # Reset our crash handler in place
3038 ->                 sys.excepthook = old_excepthook
3039            except SystemExit as e:
3040                if result is not None:
3041                    result.error_in_exec = e
3042                self.showtraceback(exception_only=True)
3043                warn("To exit: use 'exit', 'quit', or Ctrl-D.", level=1)

It looks like n(ext) should move me to the next line in the current frame:

(Pdb) help next
n(ext)
Continue execution until the next line in the current function
is reached or it returns.

And seems to do that successfully in the tutorial's example. But in my ipython it appears to be moving me to the next line within the pdb.set_trace() code.

How do I simply navigate to the 'b = "bbb"' line?

回答1:

Try this in your ipython:

import pdb
def test_pdb_example():
    a = "aaa"
    pdb.set_trace() # use 'n' for navigate to next line
    b = "bbb"
    c = "ccc"
    final = a + b + c
    return final

test_pdb_example()