vscode-pythonC-Debug-调试-Pytorch源码
vscode python/C++ Debug 调试 Pytorch源码
文章目录
本文主要介绍如何用 vscode 来调试 python/c++ 的 Pytorch 源码。
首先要先确保有一个从源码编译的 Debug 版本的 Pytorch项目,具体 Debug 版本的源码编译网上有很多相关资料,可以自行查阅操作一波。
接下来主要就是 vscode 的配置工作。
创建需要调试的文件
首先在 Pytorch 项目工程的主目录下创建一个子文件夹,在这个子文件夹中首先写一个我们想要调试的示例代码(如果直接创建文件,import torch 可能会报错)。 like this:
配置 vscode python 调试
这里要首先安装一个 Python 的扩展。
打开并选中上述 debug.py 文件之后,点击 vscode 左边调试区,选择创建一个 launch.json 文件。
.py 文件一般默认出来的 launch.json 的内容如下所示:
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
}
]
这里要调试 Python 源码加入 “justMyCode”: false 即可,添加后如下:
"version": "0.2.0",
"configurations": [
{
"name": "Python: 当前文件",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": false
}
]
保存之后,我们进入 debug.py,按下 F5 调试运行即可调试 python 源码了。
可以看到代码会自动停在我们的断点处,并且左边调试栏会有中间变量的值。左上角则是调试选项,按下 F11 进入函数,或者点击调试选项的第三个功能,则会成功跳转到 pytorch 的 python 源码了。
完成上面的步骤就可以进行 Python 代码的调试了。
配置 vscode C++ 调试
想要继续进一步将上面的代码走人 Pytorch 的 C++ 源码,查看相关的调用栈等需要基于上面的 python 调试的配置,在其基础上进一步设置 launch.json。
- 首先找到左侧调试状态栏,下拉菜单,选择
Add Configuration...
:
然后在 launch.json 里面会自动调处以下选项,我们要选择
C/C++:(gdb) 附加
:
这时 vscode 会在刚才 python 调试配置的基础上自动为我们添加相关默认内容:
{
"name": "(gdb) 附加",
"type": "cppdbg",
"request": "attach",
"program": "输入程序名称,例如 ${workspaceFolder}/a.out",
"processId": "${command:pickProcess}",
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
...
这里,我们仅需要将
"program"
修改成我们 python 解释器的路径就可以了,可以用
which python
命令来查看 python 解释器的路径,注意这个 python 解释器就是用来编译 Pytorch 源码安装的 python 环境,有多个虚拟环境的同学需要注意选择正确的 python 解释器。以我当前的环境为例,直接修改即可:
"program": "/home2/anaconda3/bin/python",
这样我们就完成了 C++ 调试的环境配置,下面来看一下如何调试。
C++ 调试
要从 .py 进入 C++ 还是需要刚才的 python 调试,让代码停住,然后 attach 到相关进程里面,这里还是以 debug.py 为例。
首先我们在 debug.py 和想查看 C++ 文件中设置对应断点,这是调试前要设置好的。
然后还是 F5 让代码先成功停在 python 断点处,然后下拉左上边的状态栏,可以看到我们刚才添加的 C++ 调试的 configuration 选项:
选择这个
(gdb) 附加
选项,并点击旁边的 Start Debugging 按钮,会需要我们选择进程:
我们可以在其中搜索运行的文件名字,然后选择第二个:
这时右下方的
TERMINAL
会弹出一个提示,我们输入
y
, 并输入电脑密码即可:
然后左边的
CALL STACK
里面就会多了一个
(gdb) 附加
的内容,注意刚才的 python 调试栏一直没动,这个时候我们要点击
Python:当前文件
的
Continue
按钮: