Perl 如何确定SEGFULT中涉及的库
我让nagios 3.2.3在CentOS 5.7上运行,某种原因导致它出现故障。最近,许多服务器被添加到配置中,因此很难判断是什么附加指令触发了问题 然而,nagios 3.2.3软件包来自rpmforge,许多现有的perl库可能是CentOS base/updates repos,因此我预计会有一些相互冲突的库导致这种情况 在strace下运行nagios服务器二进制文件会导致以下错误:Perl 如何确定SEGFULT中涉及的库,perl,gdb,segmentation-fault,nagios,Perl,Gdb,Segmentation Fault,Nagios,我让nagios 3.2.3在CentOS 5.7上运行,某种原因导致它出现故障。最近,许多服务器被添加到配置中,因此很难判断是什么附加指令触发了问题 然而,nagios 3.2.3软件包来自rpmforge,许多现有的perl库可能是CentOS base/updates repos,因此我预计会有一些相互冲突的库导致这种情况 在strace下运行nagios服务器二进制文件会导致以下错误: open("/usr/bin/p1.pl", O_RDONLY) = 4 ioctl(4
open("/usr/bin/p1.pl", O_RDONLY) = 4
ioctl(4, SNDCTL_TMR_TIMEBASE or TCGETS, 0x7fffefee6da0) = -1 ENOTTY (Inappropriate ioctl for device)
lseek(4, 0, SEEK_CUR) = 0
fcntl(4, F_SETFD, FD_CLOEXEC) = 0
fstat(4, {st_mode=S_IFREG|0664, st_size=31878, ...}) = 0
rt_sigaction(SIGCHLD, NULL, {SIG_DFL, [], 0}, 8) = 0
readlink("/proc/self/exe", "/usr/bin/nagios"..., 4095) = 15
--- SIGSEGV (Segmentation fault) @ 0 (0) ---
+++ killed by SIGSEGV +++
所以我尝试过的一些事情
--SIGSEGV(分段错误)@0(0)--
这意味着某些代码取消了对空指针的引用
在GDB下运行/usr/bin/nagios
,并使用where
命令找出是哪个代码执行了此操作