在 C++ 的 fstream 上使用 gdb

using gdb on fstream of c++

我的代码中有一个 std::fstream 对象,比如 std::fstream input 用于从文件中读取值。如何检查 gdb 调试器中的输入状态?我试过 print input.fail(),但它说:

couldn't find method std::ifstream::fail

这很可能是因为您没有为 libstdc++ 安装调试符号(这是 std::fstream 所在的位置)。

如果你只是尝试打印 input 变量,你会得到类似这样的东西,没有 libstdc++ 的调试符号:

(gdb) p input
 = <incomplete type>

我在 Fedora 上重现了这个问题,在我使用以下命令安装调试信息后,问题消失了(input 变量已成功打印并调用了 input.fail()):

sudo debuginfo-install libstdc++

另见 std::stringstream 的类似问题:
https://www.reddit.com/r/learnprogramming/comments/5dwtbb/gdb_looking_into_streams/