Debugging
Since Python’s development cycle is so fast, the most effective way to debug is often to edit your code so that it outputs relevant information at key points. Python has many ways to let your code explore its own state in order to extract information that may be relevant for debugging. The inspect
and traceback
modules specifically support such exploration, which is also known as reflection or introspection.
Once you have obtained debugging-relevant information, the print
statement is often the simplest way to display it. You can also log debugging information to files. Logging is particularly useful for programs that run unattended for a long time, such as server programs. Displaying debugging information is just like displaying other kinds of information, as covered in Chapter 10 and Chapter 17. Logging such information is mostly like writing to files (as covered in Chapter 10) or otherwise persisting information, as covered in Chapter 11; however, to help with the specific task of logging, Python’s standard library also supplies a logging
module, covered in The logging module. As covered in excepthook
in The sys Module, rebinding attribute excepthook
of module sys
lets your program log detailed error information just before your program is terminated by a propagating exception.
Python also offers hooks that enable interactive debugging. Module pdb
supplies a simple text-mode interactive debugger. Other interactive debuggers for Python are part of integrated development ...
Get Python in a Nutshell, 2nd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.