【问题标题】:using gdb on fstream of c++在 c++ 的 fstream 上使用 gdb
【发布时间】:2017-09-12 04:27:15
【问题描述】:

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

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

【问题讨论】:

    标签: c++ gdb fstream


    【解决方案1】:

    这很可能是因为您没有为 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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-21
      • 2012-04-04
      • 2014-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多