How to exit pdb and allow program to continue?

后端 未结 5 715
你的背包
你的背包 2020-12-22 20:53

I\'m using the pdb module to debug a program. I\'d like to understand how I can exit pdb and allow the program to continue onward to completion. The program is computational

相关标签:
5条回答
  • 2020-12-22 21:14

    The answer from @voithos is correct, so I'll just add one alternative in the case where you are using set_trace. Yes, the pdb.set_trace = lambda: None hack works OK, but not if you have other breakpoints set and want to reenable it later on. To me this points to the fact that unfortunately pdb is missing a bunch of functionality (even basic stuff like display lists), and this is another case.

    The good news is that pdb++ is a great drop-in replacement for pdb, and one of the things it solves is exactly the problem of disabling set_trace. So you can simply do:

    pip install pdbpp
    

    and then at the (Pdb++) prompt, type:

    pdb.disable()
    

    If you want to reenable later, unsurprisingly this works:

    pdb.enable()
    

    Easy! And you will get lots of other useful goodies on top of that.

    0 讨论(0)
  • 2020-12-22 21:28

    A simple Ctrl-D will break out of pdb. If you want to continue rather than breaking, just press c rather than the whole continue command

    0 讨论(0)
  • 2020-12-22 21:31

    If you really wish to exit the debugger then you need to run something like WinPdb which allows you to detach from the process and then exit the debugger, (N.B. It is multi-platform).

    If you would like to continue debugging but no longer stop at a given breakpoint then you need to:

    1. Make a note of the breakpoint number, (or the file and line number),
    2. Either cl bp_number or clear file:line to permanently remove the breakpoint or disable pb_number to toggle it off but be able to toggle it back.
    3. Then continue and your program run until then next different breakpoint is hit.

    For more detail on the above see the manual.

    0 讨论(0)
  • 2020-12-22 21:32

    continue should "Continue execution, only stop when a breakpoint is encountered", so you've got a breakpoint set somewhere. To remove the breakpoint (if you inserted it manually):

    (Pdb) break
    Num Type         Disp Enb   Where
    1   breakpoint   keep yes   at /path/to/test.py:5
    (Pdb) clear 1
    Deleted breakpoint 1
    (Pdb) continue
    

    Or, if you're using pdb.set_trace(), you can try this (although if you're using pdb in more fancy ways, this may break things...)

    (Pdb) pdb.set_trace = lambda: None  # This replaces the set_trace() function!
    (Pdb) continue
    # No more breaks!
    
    0 讨论(0)
  • 2020-12-22 21:33

    find new way to exit the pdb without install anything: - when the program starts to run, press ctrl+c, then switch the window to another(any window), then the original shell with pdb running should show something like: (pdb) ..... - switch back to pdb, then press Enter, now you are all set, pdb command shell reappear again

    0 讨论(0)
提交回复
热议问题