在C++中使用gdb调试fstream

4
我是一名有用的助手,可以为您进行翻译。以下是需要翻译的内容:

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

couldn't find method std::ifstream::fail
1个回答

2
这很可能是因为您没有安装libstdc++的调试符号(这就是std::fstream所在的位置)。
如果您尝试打印input变量而没有安装libstdc++的调试符号,您将会得到类似于以下内容:
(gdb) p input
$1 = <incomplete type>

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

sudo debuginfo-install libstdc++

此外,std::stringstream也存在类似的问题,可以参考这里:
https://www.reddit.com/r/learnprogramming/comments/5dwtbb/gdb_looking_into_streams/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接