How can I start the python console within a program (for easy debugging)?

前端 未结 6 1643
说谎
说谎 2021-02-10 03:52

After years of research programming in Matlab, I miss the way I could pause a program mid-execution and inspect the variables, do plotting, save/modify data, etc. via the intera

相关标签:
6条回答
  • 2021-02-10 04:33

    The code module contains classes for bringing up a REPL.

    0 讨论(0)
  • 2021-02-10 04:35

    The excellent solution I found was to use the 'code' module. I can now call 'DebugKeyboard()' from anywhere in my code and the interpreter prompt will pop-up, allowing me to examine variables and run code. CTRL-D will continue the program.

    import code
    import sys    
    
    def DebugKeyboard(banner="Debugger started (CTRL-D to quit)"):
    
        # use exception trick to pick up the current frame
        try:
            raise None
        except:
            frame = sys.exc_info()[2].tb_frame.f_back
    
        # evaluate commands in current namespace
        namespace = frame.f_globals.copy()
        namespace.update(frame.f_locals)
    
        print "START DEBUG"
        code.interact(banner=banner, local=namespace)
        print "END DEBUG"
    
    0 讨论(0)
  • 2021-02-10 04:39

    pdb is what you're looking for - just put a call to pdb.set_trace() wherever you want to drop into an debugger.

    0 讨论(0)
  • 2021-02-10 04:41

    Use the pdb library.

    I have this line bound to <F8> in Vim:

    import pdb; pdb.set_trace()
    

    That will drop you into a pdb console.

    The pdb console isn't quite the same as the standard Python console… But it will do most of the same stuff. Also, in my ~/.pdbrc, I've got:

    alias i from IPython.Shell import IPShellEmbed as IPSh; IPSh(argv='')()
    

    So that I can get into a "real" iPython shell from pdb with the i command:

    (pdb) i
    ...
    In [1]:
    
    0 讨论(0)
  • 2021-02-10 04:43

    Check out the Python debugger. In short, you can insert

    import pdb; pdb.set_trace()
    

    at any point in your program that you want to debug. (Note that you should remove these in release versions!)

    0 讨论(0)
  • 2021-02-10 04:43

    Here is a better, simpler solution, works in Python 3.8 https://stackoverflow.com/a/1396386/4566456

    Even more powerful if IPython is installed https://stackoverflow.com/a/8152484/4566456

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