PDB:如何检查嵌套堆栈帧中函数的局部变量?

Tod*_*orf 11 python debugging pdb

语境:

我正在通过PDB(Python调试器)运行一些python代码.当我设置并随后点击断点时,我可以使用以下方法检查局部变量:

(Pdb) locals()
Run Code Online (Sandbox Code Playgroud)

这打印出一个很好的名称,在我暂停的当前范围内的局部变量的值对.完善!

我还可以使用PDB where命令查看堆栈跟踪,结果如下所示:

  /System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/bdb.py(400)run()
-> exec cmd in globals, locals
  <string>(1)<module>()
  .../main.py(116)<module>()
-> run()
  .../main.py(104)run()
-> res = quicksort(res)
> .../main.py(68)quicksort()
-> if len(v) <= 1:
Run Code Online (Sandbox Code Playgroud)

在这个示例输出中,我暂停了quicksort()函数调用的run()函数.

到现在为止还挺好.

题:

如果我可以quicksort()通过调用来检查函数的局部变量,locals()我怎样才能类似地检查run()函数的局部变量?

换句话说,我如何检查嵌套在调用堆栈中的函数的局部变量?

重要说明:我不要continuesteprun()检查局部变量.我想检查(从我当前的,暂停的角度来看)run()当前嵌套在调用堆栈中的堆栈框架中的局部变量.

Jan*_*sky 15

(i)pdb提供命令,updown允许您通过调用堆栈进行旅行,这样您就可以访问更高级别的呼叫并检查那里的局部变量.

重温一些调试教程,第二次尝试可能会变得清晰.