【问题标题】:What does ?? () in segfault error mean?有什么作用?? () 中的段错误是什么意思?
【发布时间】:2013-09-04 16:12:31
【问题描述】:

我正在尝试用 C 语言编写一个回显服务器(老实说,我只是从 http://gnosis.cx/publish/programming/sockets.html 复制代码)。无论如何,编译程序没问题,但是运行时会出现段错误。 gdb 给出以下错误信息:

程序收到信号SIGSEGV,分段错误。 0xb7e46d5c 在?? () 来自 /lib/i386-linux-gnu/libc.so.6

我的问题是:“??”是什么意思?意思是?据我了解,这就是失败的函数的名称。

【问题讨论】:

    标签: c segmentation-fault


    【解决方案1】:

    在您的 glibc 中没有可用的调试信息(因为它通常在没有调试信息的情况下编译)。所以你唯一能看到的是函数的地址——但不是它的名字,因为它是未知的。

    但是,您可以使用调试信息编译您的程序(gcc 选项:-ggdb)。然后,您可以使用 gdb 或 valgrind 之类的调试器来查看 您的代码中的哪一行导致了段错误。

    【讨论】:

      【解决方案2】:

      尝试运行“bt”命令,它会给出堆栈跟踪。段错误很可能出现在您的代码中,该代码在 libc.so.6 处得到通知。由于 libc.so.6 是经过优化的二进制文件,因此它没有调试符号,因此您会得到 ?s.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-05-31
        • 2019-08-12
        • 1970-01-01
        • 1970-01-01
        • 2012-10-01
        • 2015-03-04
        • 2012-11-26
        相关资源
        最近更新 更多