Debugging 如何在Net SNMP agentX子代理中找到segfault的崩溃站点
我试图理解Centos 64位上agentX中的随机segfault。所谓随机,我的意思是,子代理除了检查是否有什么事情要做之外,所做的很少——它所属的服务器处于空闲状态,并且已经运行了一段时间。我有一个堆栈跟踪显示崩溃发生在agentx_open_会话+0x120。所使用的Net SNMP版本是通过yum获得的,因此没有调试符号,但我知道它是5.5.41.el6_3.1.x86_64。我想知道在哪里可以找到此版本的调试符号,以及如何使用它们在Net SNMP代码中定位崩溃站点。我没有核心文件-只有堆栈跟踪。您需要为此启用CentOS Debuginfo存储库 或者,首选方式是通过在Debugging 如何在Net SNMP agentX子代理中找到segfault的崩溃站点,debugging,segmentation-fault,snmp,Debugging,Segmentation Fault,Snmp,我试图理解Centos 64位上agentX中的随机segfault。所谓随机,我的意思是,子代理除了检查是否有什么事情要做之外,所做的很少——它所属的服务器处于空闲状态,并且已经运行了一段时间。我有一个堆栈跟踪显示崩溃发生在agentx_open_会话+0x120。所使用的Net SNMP版本是通过yum获得的,因此没有调试符号,但我知道它是5.5.41.el6_3.1.x86_64。我想知道在哪里可以找到此版本的调试符号,以及如何使用它们在Net SNMP代码中定位崩溃站点。我没有核心文件-
/etc/yum.repos.d/CentOS Debuginfo.repo
中设置enabled=1来启用repo
之后,您可以运行一个简单的yum安装net-snmp-debuginfo
然后,要生成核心文件,需要为运行net smnpd的用户启用核心文件。不幸的是,对于CentOS来说,这是用户root
。因此,要仅为本次会话启用核心文件,最好将ulimit-c unlimited
添加到netsnmpd的启动文件/etc/init.d/snmpd
仅用于测试。你真的需要以后再删除它
或者,可能更好的方法是关闭netsnmpd,启动一个根shell,运行ulimit
,然后手动启动snmpd。如果您能够可靠地再现问题,此方法将省去清理过程
不幸的是,我不知道它将在哪里倾倒核心,但我相信你会找到它