日志记录与调试#

在 Python 脚本中启用日志记录

  1. 导入 debug_mode 脚本

    from interpret.develop import debug_mode
    
  2. 在您正在运行的脚本/测试中添加以下代码行,以使用本地库的调试版本启用日志记录

    debug_mode(log_filename='log.txt', log_level='INFO', native_debug=True)
    
    • 在上面的命令示例中,日志被发送到 log.txt 文件,并使用 INFO 日志级别

    • 请注意,C++ 项目应在 DEBUG 模式下编译

  3. stdout/stderr 也可以用作输出,例如

    debug_mode(log_filename=stdout, log_level='INFO', native_debug=True)
    
    • 请注意,默认情况下 pytest 会捕获发送到 stdoutstderr 的输出,因此在运行测试时您看不到它。如果您想查看输出,请在 .vscode\settings.json 中添加以下参数

    "python.testing.pytestArgs": [
       "python", "-s"
    ],
    
    • 如果您选择 Run Test 选项,您应该能在 Output Window –> Python Test Log 中看到日志

    • 如果您选择 Debug Test 选项,您应该能在 DEBUG CONSOLE 中看到日志

在 VS Code 中调试 Python 和 C++

  1. PythonC++ Attach 设置调试配置。例如,启动配置文件 (launch.json) 应包含

    "configurations": [
        {
            "name": "(Windows) Attach",
            "type": "cppvsdbg",
            "request": "attach",
            "processId": "${command:pickProcess}"
        },
        {
            "name": "Python: Current File",
            "type": "python",
            "request": "launch",
            "program": "${file}",
            "console": "integratedTerminal"
        }
    ]
    
  2. 对于 interpret,我们需要确保 ctypes 加载调试版本。一种方法是导入 debug_mode 脚本并在您正在运行的脚本/测试中使用它

    from interpret.develop import debug_mode
    debug_mode(log_filename='log.txt', log_level='INFO', native_debug=True)
    
  3. 确保 C++ 项目在 DEBUG 模式下编译

  4. 开始调试 Python 脚本 / 测试

  5. 启动 C++ Attach 并选择要附加到的 PID

    • 确定要附加到的正确 PID 可能有点困难。一种方法是在您的 Python 脚本中添加以下 Python 代码以了解其 PID

      print('Current PID = {}'.format(os.getpid()))
      
  6. 此时,Python 和 C++ Attach 调试器都应该在 VS Code 调试器工具栏中看到