gpt4 book ai didi

c - 调试用 C 编写的 linux 守护进程

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:42:18 24 4
gpt4 key购买 nike

有时我用 C 编写的守护进程会收到这些错误消息:

[Fri Dec 30 07:58:54 2016] listend[13944]: segfault at 0 ip b7601e22 sp bf901d00 error 4 in libc-2.19.so[b7575000+1a7000]

[Fri Dec 30 07:58:54 2016] listend[13948]: segfault at 0 ip b7601e22 sp bf901d00 error 4 in libc-2.19.so[b7575000+1a7000]

[Fri Dec 30 07:58:54 2016] listend[13949]: segfault at 0 ip b7601e22 sp bf901d00 error 4 in libc-2.19.so[b7575000+1a7000]

[Fri Dec 30 07:58:54 2016] listend[13950]: segfault at 0 ip b7601e22 sp bf901d00 error 4 in libc-2.19.so[b7575000+1a7000]

[Fri Dec 30 07:58:54 2016] listend[13951]: segfault at 0 ip b7601e22 sp bf901d00 error 4 in libc-2.19.so[b7575000+1a7000]

[Fri Dec 30 07:58:54 2016] listend[13952]: segfault at 0 ip b7601e22 sp bf901d00 error 4 in libc-2.19.so[b7575000+1a7000]

[Fri Dec 30 07:58:54 2016] listend[13953]: segfault at 0 ip b7601e22 sp bf901d00 error 4 in libc-2.19.so[b7575000+1a7000]

[Fri Dec 30 07:58:54 2016] listend[13954]: segfault at 0 ip b7601e22 sp bf901d00 error 4 in libc-2.19.so[b7575000+1a7000]

[Fri Dec 30 07:58:54 2016] listend[13955]: segfault at 0 ip b7601e22 sp bf901d00 error 4 in libc-2.19.so[b7575000+1a7000]

我的问题是如何检查 libc-2.19.so 中的地址以查看发生错误时正在调用哪个函数?我尝试使用 gdb

但我得到:

$ gdb code/listen/i686-Linux/listend 
.
.
(gdb) info addr 0xb7575000
No symbol "0xb7575000" in current context.
(gdb) info addr 0xb771c000
No symbol "0xb771c000" in current context.

最佳答案

根据您提供的数据,这里几乎无法诊断您的问题。我可以推断的是,该地址为 0,指向代码中的 NULL 取消引用(您将 NULL 作为指向字符串地址或类似内容的指针传递,这会使您的 printf() 调用失败 --- 或再次类似)地址 0x1a7000 是在 libc 中引发异常的地方。您可能可以通过对 libc.so.xx.xx.xx 执行 nm(1) 来猜出函数名称。转储核心(通过在执行守护程序之前设置 ulimit -c unlimited)将允许使用事后调试器。或者守护进程的源代码也有帮助。抱歉,您的问题远未完成,无法提供帮助。参见 How to create a Minimal, Complete, and Verifiable example获取更多信息。

关于c - 调试用 C 编写的 linux 守护进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41401984/

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