【发布时间】:2019-10-22 10:49:03
【问题描述】:
我正在使用基于 Oracle Linux 6.10 的定制操作系统。我几乎没有自定义命令可以帮助查找防火墙规则、硬件信息等信息,但如果我运行这些命令,则会生成核心转储。
在我的一台 OracleLinux6.10 服务器上找到了 4 个核心文件,例如 core.top.myrole.34089.bt
以下是由 top.myrole 生成的错误“程序以信号 6 终止,已中止/没有可用的符号表信息”:
10/15/2019 13:54:57 core.top.myrole.34089.bt
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
top.myrole: No such file or directory.
Missing separate debuginfo for the main executable file
Try: yum --enablerepo='*-debug*' install
/usr/lib/debug/.build-id/81/7805fb3de3731d5c36c8f7da38040ee6d510ea
[New Thread 34090]
[New Thread 34089]
Core was generated by \top.myrole'.`
Program terminated with signal 6, Aborted.
#0 0x000000347960f00d in ?? ()
Thread 2 (Thread 34089):
#0 0x000000347960f00d in ?? ()
No symbol table info available.
#1 0x0000000000000001 in ?? ()
No symbol table info available.
在上述行之后,“无符号表”错误现在会在多个线程中重复。
然后发现在运行自定义命令“hardwareshow”时也生成了其他核心转储(此命令不是 linux 命令,但它是在我们的发行版中自定义的)。日志显示核心是由 '/usr/bin/perl /usr/product/bin/iprule show' 生成的:
10/14/2019 20:44:25, core.hardwareshow.8944.bt
warning: core file may not match specified executable file.
[New Thread 55835]
[Thread debugging using libthread_db enabled]
Core was generated by \/usr/bin/perl /usr/product/bin/iprule show--type=rule --protocol=ipv6 -'.Program terminated with signal 11, Segmentation fault.#0 0x0000003479a80829 in ?? () from /usr/lib64/perl5/CORE/libperl.so`
------------
10/14/2019 04:19:59, core.iprule.55835.bt
我检查了机器使用的Perl版本,似乎是Perl5,(仍然需要确认它是否是5.10)。我该如何解决这个问题,我从一些Perl专家那里听说Perl升级到新的版本在这里仍然可以提供帮助我希望从多个 Linux 开发人员/Perl 开发人员那里听到有关此错误的信息。
【问题讨论】:
-
就目前而言,您的问题是“我如何调试 C 程序”,这个话题太大了。
-
至少,你应该得到一个堆栈回溯!
-
你说你遇到了段错误,但信号 6 在我的系统上是 SIGABRT,而不是 SIGSEGV