Pycharm: 在交互式调试控制台中覆盖函数变量

Pycharm: Overwrite function variables in interactive debugging console

这是关于 Pycharm 4.5.1.

每当我在 函数 的断点处停止时,我无法在交互式 python 控制台中覆盖或创建函数中定义的任何变量(无论这些函数是否变量在断点之前或之后定义)。

相比之下,当我的调试点不在函数内时,我可以覆盖当前脚本中定义的任何变量。这是错误还是预期的行为?不管怎样,它让我发疯,因为它让任何交互式断点引导的开发变得几乎不可能。

我的问题:有什么方法可以解决 Pycharm 中的这种恼人行为?

最小示例

>>> 指的是我在交互式调试控制台的输入,一旦我到达指示的断点。

有效:

a = 3  # <- put breakpoint here

>>> a = 4

>>>一个

输出[7]: 4

有效:

def test():
    a = 3  # <- put breakpoint here
test()

>>> b = 4

>>> b

输出[7]: 4

这行不通:

def test():    
    a = 3  # <- put breakpoint here
test()

>>> a = 4

>>>一个

回溯(最近调用最后):

文件“/redacted/local/lib/python2.7/site-packages/IPython/core/interactiveshell.py”,第 3035 行,在 run_code exec(code_obj, self.user_global_ns, self.user_ns)

文件“< ipython-input-5-5cd59f58ac08>”,第 1 行,在 <模块>

一个

NameError: 名称 'a' 未定义

这行不通:

def test():
    a = 3
    print('just for the sake of placing a breakpoint')  # <- put breakpoint here
test()

>>> a = 4

>>>一个

输出[7]: 3

我所做的是从调试器执行 Alt + F8Evaluate Expression

  1. 创建函数并插入断点 声明变量之后
  2. 调出“评估表达式”对话框并重新分配 a。注意区别
  3. 关闭并恢复程序并注意控制台中的输出