如何在不修改源代码的情况下检查Winpdb 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(

,默认的Python调试器,有一个未记录的(?)
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

如果只给出console命令,例如,
eval x+1
?@IstvanChung:这是一个很好的选项,大多数时候都应该这样做,但是如果返回的表达式有副作用,我不想这样做。如果我返回的表达式有副作用,该怎么办?有没有办法避免运行两次?