【发布时间】: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代码中的错误。