主要是修改setup.py中ext_modules
模塊
分別在extra_compile_args
和extra_link_args
中添加’-g’,此處表示為debug模式,如果此時編譯,後面進入c++代碼後會不停地跳,原因是因為c++編譯的時候會自動優化,所以還需要gcc編譯的時候不讓它優化,因此還需要添加’-O0’,這樣就可以正確debug c or c++代碼了。
修改之後代碼為
ext_modules = [
Pybind11Extension("sampler_core",
['sampler_core.cpp'],
extra_compile_args = ['-fopenmp','-g','-O0'],
extra_link_args = ['-fopenmp','-g'],),
]
然後重新編譯一下即可
先在vscode上安裝插件C/C++ Extension Pack
,然後把launch.json修改如下
{
// 使用 IntelliSense 了解相關屬性。
// 懸停以查看現有屬性的描述。
// 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Attach",
"type": "cppdbg",
"request": "attach",
"program": "/home/amax/anaconda3/envs/torch/bin/python", //-- 修改這一欄為你執行pytorch的python路徑
"processId": "${command:pickProcess}",
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "Python: Current File",
"type": "python",
"request": "launch",
"program": "${file}",
"console": "integratedTerminal",
"justMyCode": false
}
]
}
在python調用C++的代碼處加斷點(當然也可以使用pdb在代碼裡pdb.set_trace()),使用
使用網頁中第一種方式解決
*(type(*)[size])array_name
還沒嘗試,zz同學應該試成功