vscode调试tvm,python和c++ .so 动态链接库同时调试
方法:python,vscode安装python插件后直接调试。
c++ .so,python运行后打印自己的进程号,到断点暂停。c++插件驱动gdb attach到python进程,开启调试。
注意:vscode驱动gdb attach进程,ubuntu 22.04上需要给一个sudoer权限。这么设置最简便:echo 0| sudo tee /proc/sys/kernel/yama/ptrace_scope
tvm需要debug(O0)编译,RelWithDebugInfo会导致调试时gdb偶发退出。cmake -D CMAKE_BUILD_TYPE="Debug" -G Ninja ..
---------------------------------------------------------------------------------------------------------------------
print(os.getpid()) #python运行后打印自己的进程号 给后边gdb使用
.vscode/launch.json
{
"name": "lenet",
"type": "cppdbg",
"request": "attach",
"program": "/usr/local/lib/libtvm.so",
"MIMode": "gdb",
"setupCommands": [
{
"description": "为 gdb 启用整齐打印",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "将反汇编风格设置为 Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
这个cpp调试项会自动弹出进程选择框,输入 print(os.getpid()) 打印的进程号,等待几分钟就gdb就连接好了。