This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | Next revision Both sides next revision | ||
other:python:jyp_steps [2016/02/18 11:02] jypeter Started the debug section |
other:python:jyp_steps [2016/02/19 15:17] jypeter Added more debugger mode instructions |
||
---|---|---|---|
Line 192: | Line 192: | ||
===== Debugging your code ===== | ===== Debugging your code ===== | ||
- | There is only so much you can do with staring at your code in your favorite text editor, and adding ''print'' lines in your code (or [[https://docs.python.org/2/howto/logging.html#logging-basic-tutorial|using logging]] instead of ''print''). The next step is to use the python debugger! | + | There is only so much you can do with staring at your code in your favorite text editor, and adding ''print'' lines in your code (or using [[https://docs.python.org/2/howto/logging.html#logging-basic-tutorial|logging]] instead of ''print''). The next step is to **use the python debugger**! |
==== Debugging in text mode ==== | ==== Debugging in text mode ==== | ||
+ | |||
+ | - Start the script with: ''python -m pdb my_script.py'' | ||
+ | - Type ''run'' (or **r**) to go to the first line of the script | ||
+ | - Type ''continue'' (or **c**) to execute the script to the end, or till the first breakpoint or error is reached | ||
+ | - Use ''where'' (or **w**) to check the call stack that led to the current stop. Use ''up'' and ''down'' to navigate through the call stack and examine the values of the functions' parameters | ||
+ | - Type ''break NNN'' to stop at line NNN | ||
+ | - Use ''type(var)'' and ''print var'' to check the type and values of variables. You can also change the variables' values on the fly! | ||
+ | - Type ''run'' (or **r**) to restart the script | ||
+ | - Use ''next'' and ''step'' to execute some parts of the script line by line. If a code line calls a function: | ||
+ | * ''next'' (or **n**) will execute a function and stop on the next line | ||
+ | * ''step'' (or **s**) will stop at the first line **inside the function** | ||
+ | - Check the [[https://docs.python.org/2/library/pdb.html#debugger-commands|debugger commands]] for details, or type ''help'' in the debugger for using the built-in help | ||
==== Using pydebug ==== | ==== Using pydebug ==== | ||
+ | Depending on the distribution, the editor and the programming environment you use, you may have access to a graphical version of the debugger. UV-CDAT users can use ''pydebug my_script.py'' | ||
===== Improving the performance of your code ===== | ===== Improving the performance of your code ===== |