C++项目中调试时断点未命中
我现在正在调试一个Python应用,这个应用用到了C++的功能,使用的是pybind11
这个工具。
我是在一个Linux的Docker环境下进行调试。
我已经设置好了调试器,配置文件是launch.json
,内容如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "Python",
"type": "debugpy",
"request": "launch",
"program": "myscript.py",
"console": "integratedTerminal"
},
{
"name": "(gdb) Attach",
"type": "cppdbg",
"request": "attach",
"program": "/usr/local/bin/python",
"processId": "${command:pickProcess}",
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
],
}
]
}
这是我的setup.py
文件:
import os
from distutils.core import setup
from pybind11.setup_helpers import Pybind11Extension
os.environ["CPPFLAGS"] = "-g"
setup(name="my_add",
version="1.0.0",
ext_modules=[Pybind11Extension("my_add", ["add.cpp"]],
)
调试器运行得很好,我可以在C++和Python文件之间切换。不过,我遇到了一个问题,就是在add.cpp
文件中设置的断点没有被触发。正如提供的截图所示,调试器似乎直接跳过了这些断点,没有暂停执行:
1 个回答
0
编译器对cpp文件进行了优化。为了解决这个问题,我添加了一个叫做-O0
的标志,这个标志告诉gcc/g++不要对代码进行优化。所以我把setup.py
修改成了下面这样:
import os
from distutils.core import setup
from pybind11.setup_helpers import Pybind11Extension
os.environ["CPPFLAGS"] = "-O0 -g"
setup(name="my_add",
version="1.0.0",
ext_modules=[Pybind11Extension("my_add", ["add.cpp"]],
)