【问题标题】:Pycharm: Overwrite function variables in interactive debugging consolePycharm:在交互式调试控制台中覆盖函数变量
【发布时间】:2016-01-09 19:23:09
【问题描述】:

这是关于 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

>>> 一个

Traceback(最近一次调用最后一次):

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

文件“”,第 1 行,在

一个

NameError: 名称“a”未定义

这不起作用:

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

>>> a = 4

>>> 一个

输出[7]:3

【问题讨论】:

    标签: python pycharm


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,这可以作为一种解决方法!这种方式还是有点麻烦。如果可以在所谓的“交互式”控制台中重新分配变量,那就容易多了。
    • 我个人不喜欢他们的整体调试设置。
    • 是的,我也没有。您是否知道任何具有类似功能 (*)、但更好的、可能类似于 Matlab 的调试功能的 IDE? (*) 好吧,我知道,这非常模糊 - 但与 Pycharm 类似级别的代码自省将是一个开始。
    • 我刚刚遇到了“快速评估表达式”选项(Ctrl + Alt + 8),它可以避免打开单独的对话框窗口。它通过在控制台(或编辑器)中选择当前命令并按 Ctrl + Alt + 8 来工作。远非理想,但至少可行 -> 接受的答案。
    猜你喜欢
    • 2016-12-05
    • 2023-04-01
    • 1970-01-01
    • 2017-03-04
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    相关资源
    最近更新 更多