【发布时间】:2017-09-12 04:27:15
【问题描述】:
我的代码中有一个std::fstream 对象,例如std::fstream input 用于从文件中读取值。如何检查 gdb 调试器中的输入状态?我试过print input.fail(),但它说:
couldn't find method std::ifstream::fail
【问题讨论】:
我的代码中有一个std::fstream 对象,例如std::fstream input 用于从文件中读取值。如何检查 gdb 调试器中的输入状态?我试过print input.fail(),但它说:
couldn't find method std::ifstream::fail
【问题讨论】:
这很可能是因为您没有为 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/
【讨论】: