【问题标题】:vscode: evaluating multiple selected lines in the debug console causes an indentation error (with python classes)vscode:在调试控制台中评估多个选定的行会导致缩进错误(使用 python 类)
【发布时间】:2021-09-17 07:35:02
【问题描述】:

我一直在努力解决在 VSCode 中我想在调试控制台中评估多行 Python 代码而不必单独选择每一行并将其发送到调试控制台的问题。但是,当我一次选择多行并想在调试控制台中评估它们时,现有的缩进会被复制到调试控制台并在那里导致缩进错误。从那以后,我已经能够将问题缩小到我确定这主要发生在调试类方法时。下面给出了一个最小的示例。

class MyClass:
    def __init__(self):
        pass
    def run(self):
        a = 3
        b = 4
        c = a + b
MyClass().run()
  

如果我在a = 3 行设置断点,然后在调试期间到达该断点,然后我选择行a = 3 直到并包括c = a + b 并希望在调试控制台中评估所有3 行,这导致将行复制到调试控制台,如下所示:

a = 3
        b = 4
        c = a + b

这会导致以下错误:

Traceback (most recent call last):
  File "/home/lukas/.vscode/extensions/ms-python.python-2021.9.1230869389/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py", line 419, in evaluate_expression
    compiled = compile(_expression_to_evaluate(expression), '<string>', 'eval')
  File "<string>", line 1
    a = 3
      ^
SyntaxError: invalid syntax

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/lukas/.vscode/extensions/ms-python.python-2021.9.1230869389/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_comm.py", line 1207, in internal_evaluate_expression_json
    pydevd_vars.evaluate_expression(py_db, frame, expression, is_exec=True)
  File "/home/lukas/.vscode/extensions/ms-python.python-2021.9.1230869389/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py", line 371, in new_func
    return _run_with_unblock_threads(original_func, py_db, curr_thread, frame, expression, is_exec)
  File "/home/lukas/.vscode/extensions/ms-python.python-2021.9.1230869389/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py", line 339, in _run_with_unblock_threads
    return _run_with_interrupt_thread(original_func, py_db, curr_thread, frame, expression, is_exec)
  File "/home/lukas/.vscode/extensions/ms-python.python-2021.9.1230869389/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py", line 310, in _run_with_interrupt_thread
    return original_func(py_db, frame, expression, is_exec)
  File "/home/lukas/.vscode/extensions/ms-python.python-2021.9.1230869389/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_vars.py", line 421, in evaluate_expression
    Exec(_expression_to_evaluate(expression), updated_globals, frame.f_locals)
  File "/home/lukas/.vscode/extensions/ms-python.python-2021.9.1230869389/pythonFiles/lib/python/debugpy/_vendored/pydevd/_pydevd_bundle/pydevd_exec2.py", line 3, in Exec
    exec(exp, global_vars, local_vars)
  File "<string>", line 2
    b = 4
    ^
IndentationError: unexpected indent

这是一个非常烦人的问题。任何解决方案将不胜感激。

【问题讨论】:

    标签: python debugging visual-studio-code


    【解决方案1】:

    你确实复制了第二行的缩进。

    当您从a 复制到a+b 时,您可以按Alt + Shift 来避免这种情况。

    【讨论】:

      猜你喜欢
      • 2021-09-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      相关资源
      最近更新 更多