【问题标题】:How to locate the crash site for a segfault in Net-SNMP agentX sub-agent如何在 Net-SNMP agentX 子代理中找到段错误的崩溃站点
【发布时间】:2012-10-16 01:49:08
【问题描述】:
我试图了解 Centos 64 位上 agentX 中的随机段错误。随机我的意思是子代理除了检查是否有任何事情要做之外几乎没有做任何事情 - 它所属的服务器处于空闲状态并且已经有一段时间了。我有一个堆栈跟踪说崩溃发生在 agentx_open_session+0x120。正在使用的 Net-SNMP 版本是使用 yum 获得的,因此它没有调试符号,但我知道它是 5.5.41.el6_3.1.x86_64。我想知道在哪里可以找到此版本的调试符号以及如何使用它们来定位 Net-SNMP 代码中的崩溃站点。我没有核心文件——只有堆栈跟踪。
【问题讨论】:
标签:
debugging
segmentation-fault
snmp
【解决方案1】:
您需要为此启用 CentOS Debuginfo 存储库。
install the RPM directly 或首选方式,通过在 /etc/yum.repos.d/CentOS-Debuginfo.repo 中设置 enabled=1 来启用 repo。
之后你就可以运行一个简单的yum install net-snmp-debuginfo。
然后,要生成核心文件,您需要为运行 net-smnpd 的用户启用核心文件。不幸的是,对于 CentOS,这是用户 root。因此,要仅为该会话启用核心文件,最好将ulimit -c unlimited 添加到net-snmpd 的启动文件/etc/init.d/snmpd。 仅用于测试。您确实需要稍后再将其删除。
或者,可能更好的是,关闭 net-snmpd,启动 root-shell,运行 ulimit,然后手动启动 snmpd。如果您能可靠地重现问题,此方法将为您省去清理过程。
很遗憾,我不知道它将转储核心的位置,但我相信你会找到它。