VScode:远程调试 - 缺少断点

问题描述 投票:0回答:1

在序言中,请注意我是 VScode 的新用户。

在我目前参与的一个项目中,工作流程或多或少如下:

  • 运行主 bash 脚本来加载模块和特定变量
  • 前面的脚本加载了一个“main.py”Python文件:它的作用是链接不同的外部软件和Python代码
  • 外部软件也要求自己的Python脚本

该脚本在远程服务器中运行(在Linux操作系统下,而我在Windows操作系统下),但现在这个主题现在很困难。

我正在使用Python调试器“attach”,我面临着当前的困难

  1. 如果第一个断点设置在“main.py”文件中,就可以;我可以在同一个文件中添加另一个,然后使用 continue 等等
  2. 但是,如果我使用 vscode 空闲(红点)甚至“debugpy.breakpoint()”在另一个 python 文件(后面的 python 文件(2))中添加断点,它就会被简单地绕过
  3. 如果我的第一个断点设置为 python 文件 2,调试将停止,但它正在等待调试器附加(我无法控制运行它)

第一个断点添加:

    import debugpy
    debugpy.listen(5678)
    print("Waiting for debugger attach")
    debugpy.wait_for_client()
    debugpy.breakpoint()

我想我应该提供更多信息,但是哪些信息?我错过了什么

总结一下程序的工作流程:

bash script   ------> main.py ----------> external soft1 ----> etc
                         |                       |
                         |                       |
                   external soft2          python file (2)

谢谢

保罗

python vscode-debugger
1个回答
0
投票

我做了一个基本的例子,应该可以重现这个问题(断点也被错过) - 请注意这里的主要优点,它打印了我在实际程序中错过的一些信息。

该示例由4个文件组成:

  • 2 个 bash 文件
  • 2 个 python 文件

在实践中,输入

"sh start.sh"

  • 文件1:start.sh
#!/bin/bash
python test_breakpoint.py
  • 文件2:run_python.sh
#!/bin/bash
python inside_file.py
  • 文件3:test_breakpoint.py
import os, subprocess, debugpy

path = os.getcwd()
shfile = "run_python.sh"

# /// DEBUGGING
debugpy.listen(5678)
print("Waiting for Python debugger: attach")
debugpy.wait_for_client()
debugpy.breakpoint()
# /// DEBUGGING

command_line = f"sh {shfile}"
args = command_line.split()
run = subprocess.run(args)
  • 文件 4:inside_file.py
import debugpy
print("\n*** here is a breakpoint ***\n")
debugpy.breakpoint()

  • launch.json 文件是:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python Debugger: Attach",
            "type": "debugpy",
            "request": "attach",
            "port": 5678,
            "host": "localhost",
            "justMyCode": true,
            "pythonArgs": [
                "-Xfrozen_modules=off"
            ],
            "env": {
                "PYDEVD_DISABLE_FILE_VALIDATION": "1"
            }
          }
    ]
}

无论我实现什么,都会出现以下警告,并且主 python 文件(此处为 test_breakpoint.py)之外的任何断点都会被忽略...... ...我错过了什么?

感谢您的帮助

0.00s - 调试器警告:似乎正在使用冻结的模块,这可能 0.00s - 使调试器错过断点。请传递 -Xfrozen_modules=off 0.00s - python 禁用冻结模块。 0.00s - 注意:调试将继续。设置 PYDEVD_DISABLE_FILE_VALIDATION=1 以禁用此验证。 等待Python调试器:attach

*** 这里有一个断点***

0.00s - 调试器警告:似乎正在使用冻结的模块,这可能 0.00s - 使调试器错过断点。请传递 -Xfrozen_modules=off 0.00s - python 禁用冻结模块。 0.00s - 注意:调试将继续。设置 PYDEVD_DISABLE_FILE_VALIDATION=1 以禁用此验证。

© www.soinside.com 2019 - 2024. All rights reserved.