You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在VS Code中调试Jupyter Notebook调用的Python C++扩展

回答

一、调试Jupyter Notebook调用的C++扩展

可以通过附加进程的方式实现,步骤如下:

  1. 启动Jupyter Notebook,运行包含扩展调用代码的单元格,在代码中加入input()暂停执行(避免代码直接跑完)。
  2. 在VS Code中新增launch.json配置,类型选择cppdbg,请求类型设为attach,示例配置:
{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Attach to Jupyter Process",
      "type": "cppdbg",
      "request": "attach",
      "processId": "${command:pickProcess}",
      "MIMode": "gdb",
      "setupCommands": [
        {
          "description": "Enable gdb pretty-printing",
          "text": "-enable-pretty-printing",
          "ignoreFailures": true
        }
      ],
      "environment": [
        {
          "name": "PYTHONPATH",
          "value": "${workspaceFolder}/path/to/cpp/extension/for/python:${env:PYTHONPATH}"
        }
      ],
      "cwd": "${workspaceFolder}"
    }
  ]
}
  1. 启动该调试配置,在弹出的进程列表中选中Jupyter对应的Python进程(通常显示为python/python3,可通过进程ID或命令行参数区分)。
  2. 附加成功后,在C++扩展代码中设置断点,回到Notebook按回车继续执行,触发断点后即可调试。

二、更新便捷的调试替代方案

1. VS Code Python+C++联合调试(官方推荐)

现在VS Code的Python和C/C++扩展支持无缝联合调试,无需手动编写复杂的launch.json:

  • 确保安装最新版的Python和C/C++扩展。
  • 在Python脚本/Notebook代码中,调用扩展前加入:
    import debugpy
    debugpy.listen(5678)
    debugpy.wait_for_client()
    
  • 启动Python进程后,用VS Code的Python调试器附加到5678端口,同时用C调试器附加到对应Python进程,即可实现双向断点调试;或者直接打开Python脚本,点击右上角「调试」按钮选择「Python Debugger」,C断点会在扩展调用时自动触发(需确保PYTHONPATH指向扩展目录)。

2. CMake Tools扩展适配(CMake构建场景)

如果你的扩展用CMake构建,安装CMake Tools扩展可以大幅简化调试:

  • 在CMakeLists.txt中开启Debug模式:set(CMAKE_BUILD_TYPE Debug)。
  • 点击CMake Tools状态栏的「调试」按钮,直接启动并调试调用扩展的Python脚本,扩展会自动处理环境变量、构建产物关联和调试配置。

3. Ninja构建+快速调试

配合Ninja构建系统,Debug模式下编译速度更快,VS Code可自动关联构建产物:

  • 用Ninja编译Debug版本的扩展,确保PYTHONPATH正确配置。
  • 直接在C++代码中设置断点,运行Python脚本/Notebook代码时,VS Code会自动触发断点,无需额外配置launch.json的核心参数。

内容的提问来源于stack exchange,提问作者A.L.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 02:05:18