我正在尝试使用 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 时,这似乎并没有解决问题。
提前致谢。
终于,我解决了这个问题。 当 gdb 执行时,它会在用户的主目录(Unix 系统)上查找名为
.gdbinit
的配置文件。要为 gdb 提供正确的标头目录,只需将命令 source {your header's directory}
放在前面提到的文件上即可。
如果 Visual Studio 无法识别 c/c++ 函数,只需将标头的位置放在 settings.json 文件中即可 (
"C_Cpp.default.includePath": ["your header's directory"]
.
问题是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 .