Working With Stack Traces
Now it’s time to see how you can use pbd
to inspect the state of variables at any point along the call stack. You can call w
at any time to show a stack trace up to the stack frame you are working at. This is especially helpful if you’re lost.
You can use u
and d
to move up and down the stack trace respectively. When you move into a different stack frame, you can do things like print its local variables.
00:00
For our last lesson, let’s see how we can use pdb to inspect the state of variables at any point along the call stack. pdb provides us with a few more commands which will allow us to see stack traces of execution up to our breakpoints, as well as move up and down those stack frames. Here, I have example5.py
open, which calls a get_path()
function within another module called fileutil
.
00:33
If we inspect that file, we can see that line 4 contains our all-too-familiar breakpoint. Execution will stop before the head
and tail
variables are initialized.
00:48
I’m going to move over to my Z shell and run this file as usual. Execution has stopped at the breakpoint. If we use the w
command, short for where, we’ll see a stack trace that shows us every function call—or stack frame—up to the current frame, which contains the breakpoint.
01:09
Now I can use the u
and d
commands to move up and down the stack trace.
01:17
I want to inspect the full_fname
variable that’s local to the function get_file_info()
. To do that, I’ll type u
to move up a frame, and now we’re stopped at the frame representing the call to get_file_info()
.
01:36
Because the variable I want is in scope, I can say p full_fname
, and when I press Enter, we see './example5.py'
. To move back down, I can use d
, and now we’re stopped at the breakpoint again.
01:58
Just remember: if you ever get lost and you’re not sure where you are, you can use w
to print a stack trace up to the current stack frame you are in.
Become a Member to join the conversation.