Visual Studio Code 上的 GDB 尝试从不存在的目录读取标头

问题描述 投票:0回答:2

我正在尝试使用 vscode 中的 gdb 调试用 c++ 编写的程序。

当调试器从头

ifstream()
调用函数
fstream
时,它无法找到头文件,因为gdb正在目录
/build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/ 
中查找它,而该目录不存在并导致错误的代码执行。 我已经通过从终端在 gdb 上使用命令
directory /usr/include/c++/10.2.0/
解决了这个问题,但是当我从 vscode 中使用 gdb 时,这似乎并没有解决问题。

来自 vscode 的错误消息

提前致谢。

c++ visual-studio-code gdb vscode-debugger
2个回答
1
投票

终于,我解决了这个问题。 当 gdb 执行时,它会在用户的主目录(Unix 系统)上查找名为

.gdbinit
的配置文件。要为 gdb 提供正确的标头目录,只需将命令
source {your header's directory}
放在前面提到的文件上即可。

如果 Visual Studio 无法识别 c/c++ 函数,只需将标头的位置放在 settings.json 文件中即可 (

"C_Cpp.default.includePath": ["your header's directory"]
.

这里有关于 gdb 初始化文件的更多信息


0
投票

问题是gdb尝试打开路径/build/gcc/src/gcc-build/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/ios_base.h中不存在的gcc标头

您可以在主目录中创建一个 ~/.gdbinit 文件并将这些行放入该文件中: [只需根据您的情况更改路径,所有这些路径都存在]

保存它,然后重新启动 vscode 最后现在它可以工作了,你可以进入这些标题

将以下文本放入您的 .gdbinit 文件中:

directory /usr/include/c++/14.2.1/
directory /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/bits/
directory /usr/include/c++/14.2.1/bits/
directory /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/32/bits/
directory /usr/include/c++/14.2.1/ext/
directory /usr/include/c++/14.2.1/ext/pb_ds/
directory /usr/include/c++/14.2.1/x86_64-pc-linux-gnu/ext/
directory /usr/include/c++/14.2.1/debug/
directory /usr/include/c++/14.2.1/tr1/
directory /usr/include/c++/14.2.1/tr2/
directory /usr/include/c++/14.2.1/backward/
directory /usr/include/c++/14.2.1/experimental/bits/

set auto-load safe-path .
© www.soinside.com 2019 - 2024. All rights reserved.