Join us and get access to hundreds of tutorials and a community of expert Pythonistas.

Unlock This Lesson

This lesson is for members only. Join us and get access to hundreds of tutorials and a community of expert Pythonistas.

Unlock This Lesson

Hint: You can adjust the default video playback speed in your account settings.
Hint: You can set the default subtitles language in your account settings.
Sorry! Looks like there’s an issue with video playback 🙁 This might be due to a temporary outage or because of a configuration issue with your browser. Please see our video player troubleshooting guide to resolve the issue.

Working With Stack Traces

Give Feedback

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.