【发布时间】:2020-10-27 18:31:42
【问题描述】:
当我使用带有 Python 的 VS Code 调试器在某些断点处停止时,我经常直接在调试控制台中编写一些行(在我的程序中将其用作交互式 Python shell)。
问题是,当我在这些行中出现错误时,从调试控制台键入时,我看不到错误的完整 Python 样式回溯,而只看到最后一行 (
是否有任何方法可以配置 VS Code 调试器以显示从调试器执行的行引发的错误的完整回溯?
我通过 ssh 在远程机器上开发(和调试)。
例子:
我写了一个名为 tmp2.py 的文件,其中包含:
class A:
def __init__(self, val):
print(val)
a = A()
如果我将调试点放在第 5 行:print('start'),
然后从调试控制台直接输入a = A(),我看到这一行输出:
TypeError: __init__() missing 1 required positional argument: 'val'
但如果我运行完整的程序,我会看到详细的输出:
Traceback (most recent call last):
File "/home/innereye/anaconda2/envs/py3tf2/lib/python3.7/runpy.py", line 193, in _run_module_as_main
"__main__", mod_spec)
File "/home/innereye/anaconda2/envs/py3tf2/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/innereye/.vscode-server/extensions/ms-python.python-2020.6.91350/pythonFiles/lib/python/debugpy/__main__.py", line 45, in <module>
cli.main()
File "/home/innereye/.vscode-server/extensions/ms-python.python-2020.6.91350/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 430, in main
run()
File "/home/innereye/.vscode-server/extensions/ms-python.python-2020.6.91350/pythonFiles/lib/python/debugpy/../debugpy/server/cli.py", line 267, in run_file
runpy.run_path(options.target, run_name=compat.force_str("__main__"))
File "/home/innereye/anaconda2/envs/py3tf2/lib/python3.7/runpy.py", line 263, in run_path
pkg_name=pkg_name, script_name=fname)
File "/home/innereye/anaconda2/envs/py3tf2/lib/python3.7/runpy.py", line 96, in _run_module_code
mod_name, mod_spec, pkg_name, script_name)
File "/home/innereye/anaconda2/envs/py3tf2/lib/python3.7/runpy.py", line 85, in _run_code
exec(code, run_globals)
File "/home/innereye/deeplearning/tmp2.py", line 6, in <module>
a = A()
TypeError: __init__() missing 1 required positional argument: 'val'
这会将我引导到引发错误的实际文件和行。
我希望调试器向我显示直接从调试控制台执行的行的第二个输出。
【问题讨论】:
-
但是在调试控制台中,并没有产生错误的行号。您只是自己键入了该行。除此之外,我认为堆栈跟踪中没有任何有用的信息。除了最后一行之外,您在 strack 跟踪中看到的所有内容都只是 VS Code 用来最终调用 Python 解释器的多层包装器。
标签: python visual-studio-code vscode-debugger vscode-remote