我正在尝试使用 VSCode 调试在 docker 容器内运行的 C++ 应用程序。我按照下面提到的步骤来做到这一点
- 在 VSCode 中安装 C/C++ 和 Remote-Containers 扩展
- 将 VSCode 连接到 docker 容器
- 添加了以下 C/C++: (gdb) 在 launch.json 中附加配置
{
"name": "(gdb) Attach",
"type": "cppdbg",
"request": "attach",
"program": "/usr/local/bin/myfeature",
"processId": "${command:pickProcess}",
"MIMode": "gdb",
"additionalSOLibSearchPath": "/usr/local/bin/myfeature.dbg",
"sourceFileMap":{
"<source-path>": "/usr/local/src/test/av/"
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
当我开始调试文件 myclass.cc 中的断点时,它被禁用并显示状态为“尚未加载包含此断点的模块......”
我对 gdb 不是很熟悉,但是当我从命令行运行此命令时
gdb /usr/local/bin/myfeature
我明白了
Reading symbols from /usr/local/bin/myfeature...
Reading symbols from /usr/local/bin/myfeature.dbg...
然后我可以使用添加断点
break myclass.cc:15
如果 gdb 能够读取符号并添加断点,那么为什么 VSCode 不能做到这一点?我在这里做错了什么?谢谢