【问题标题】:gdb gives error relating to iofwrite.cgdb 给出与 iofwrite.c 相关的错误
【发布时间】:2018-08-02 22:24:55
【问题描述】:

我正在使用 gdb 来找出为什么会出现 seg 错误。我运行命令gba myProg core,这样我就可以看到来自 seg 故障的核心转储。核心转储内容如下。

Program terminated with signal SIGSEGV, Segmentation fault.
#0  __GI__IO_fwrite (buf=0x7f32040167a0, size=1, count=2, fp=0x0) at iofwrite.c:37
37  iofwrite.c: No such file or directory.
[Current thread is 1 (Thread 0x7f3209bac700 (LWP 20157))]

我很难弄清楚错误消息。似乎是说 seg 错误是由于 iofwrite.c 但我似乎无法找到有关此类文件的任何信息。我认为它与 fwrite 有关。

【问题讨论】:

  • 除非您发布代码,否则我们无法告诉您问题所在。
  • iowrite.c 是 glibc 的一部分。看起来你像fwrite(NULL, 100, 100, NULL) 一样叫smth 并且你的程序段错误。
  • @Osiris,在这种特殊情况下,我认为很难产生一个 MCVE,当你只有一个核心转储和 gdb 的输出。不过,Kamil Cuk 在他的评论中可能已经解决了这个问题。这应该足以解决或提出一个新问题。我不知道,也许这个问题的标题应该更像是“我如何解释gdb的输出”
  • 在程序收到 SIGSEGV 错误后,您是否可以编辑您的问题以包含当您向 gdb 提供 bt 命令时获得的输出?然后我们就可以看到你代码中的错误在哪里导致了libc代码中的错误。

标签: c gdb


【解决方案1】:

您将 NULL fp 传递给 fwrite()。没有代码不可能更完整地回答。

【讨论】:

    【解决方案2】:

    我也遇到过这个问题,原因是我的输出文件名无效。

    【讨论】:

    • 您好,欢迎来到stackoverflow,请添加输出文件无效的原因。它的目录路径不好?它无权将文件写入特定目录?创建的文件名称不同?更详细地了解您的解决方案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多