如何在不修改源代码的情况下检查Winpdb Python调试器中的返回值?
,默认的Python调试器,有一个未记录的(?)如何在不修改源代码的情况下检查Winpdb Python调试器中的返回值?,python,debugging,pdb,winpdb,Python,Debugging,Pdb,Winpdb,,默认的Python调试器,有一个未记录的(?)retval命令,如果您已经计算了当前函数的返回值,并且距离返回调用者帧只有一步之遥,则该命令将打印当前函数的返回值 图形调试器中是否有类似的功能?我在任何地方都找不到返回值,并且它不将retval识别为命令 顺便说一下,我知道我可以只添加一个中间变量并检查它,但是我希望避免编辑我正在调试的代码,特别是当它来自第三方库时 #original code def f(x): return x+1 #debugging code def f(
retval
命令,如果您已经计算了当前函数的返回值,并且距离返回调用者帧只有一步之遥,则该命令将打印当前函数的返回值
图形调试器中是否有类似的功能?我在任何地方都找不到返回值,并且它不将retval识别为命令
顺便说一下,我知道我可以只添加一个中间变量并检查它,但是我希望避免编辑我正在调试的代码,特别是当它来自第三方库时
#original code
def f(x):
return x+1
#debugging code
def f(x):
r = x+1
return r
最后,我也欢迎其他调试器,只要它们有GUI,在Linux上运行,并且不捆绑在IDE中。诅咒GUI算吗?调试器在终端中运行,但有一个基于诅咒的GUI。看到截图了吗 (不要被蓝色关掉,还有其他主题) 它具有您想要的功能,当您跨过return语句时,它会停止并显示返回值。请参见下面的屏幕截图 在控制台中
- 使用
在bp filename.py:f
f
- 使用
并等待触发断点go
- 进入并使用
或r
return
- 使用
或v
获取值,例如eval
vx+1
eval x+1
?@IstvanChung:这是一个很好的选项,大多数时候都应该这样做,但是如果返回的表达式有副作用,我不想这样做。如果我返回的表达式有副作用,该怎么办?有没有办法避免运行两次?