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 按钮:

稍等片刻,就可以得到下面的内容,可以看到 C++ 的调用栈,并且进入到 C++ 的源码里了:

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值