1

我正在尝试使用 VSCode 调试在 docker 容器内运行的 C++ 应用程序。我按照下面提到的步骤来做到这一点

  1. 在 VSCode 中安装 C/C++ 和 Remote-Containers 扩展
  2. 将 VSCode 连接到 docker 容器
  3. 添加了以下 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 不能做到这一点?我在这里做错了什么?谢谢

4

0 回答 0