gpt4 book ai didi

c - 核心文件的 gdb 回溯打印错误 "no such file or directory"

转载 作者:太空宇宙 更新时间:2023-11-04 10:22:38 25 4
gpt4 key购买 nike

在测试程序时,我遇到了一个段错误,它转储了所需的核心。

我正在使用 gdb 调试一个核心文件:gdb/path/to/exec path/to/core

我在查看核心文件(和源代码)后意识到问题实际上是在使用“strcmp”函数时发生的空指针取消引用。

但是,核心文件回溯给出了以下错误消息:

程序因信号 SIGSEGV、段错误而终止。

#0 __strcmp_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S:32

32 ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: 没有那个文件或目录。

(gdb)bt

#0 __strcmp_sse2_unaligned () at ../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S:32

#1 0x00000000004041f1 in main (argc=1, argv=0x7ffced1f8ae8) at main.c:1144

现在这是一条奇怪的消息,我无法理解。我不确定为什么 gdb 会打印此消息 "../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S: No such file or directory"

我应该得到一些与 NULL 指针取消引用相关的消息,但我却得到了这个。这意味着什么?

最佳答案

这个错误看起来很神秘,但它是正确的。它表明 strcmp 正在取消引用 NULL 指针,这是从代码的第 1144 行调用的。

段错误是指试图访问无效的内存页:其段在 MMU 中被映射为读取或写入无效。在这种情况下,strcmp 试图访问页面 0,因为您向它传递了一个 NULL ptr。 Null Ptr 是地址零,页面 0 是无效页面。

文件引用:

../sysdeps/x86_64/multiarch/strcmp-sse2-unaligned.S

指的是在 64 位架构上为 x86 实现 strcmp 的汇编程序文件 (.S)。由于您的系统上没有该实现文件,gdb 提示它无法访问它。

关于c - 核心文件的 gdb 回溯打印错误 "no such file or directory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43197311/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com