我的工作是"在Linux平台上创建验尸数据记录器"。我张贴了一个问题关于这个项目以前也。在这里,我得到了RHEL版本:2.6.18.128-el5中core dump文件创建的调用流程机制。
如下:
File Function called
1.source/ arch/i386/kernel/signal.c -----> do_signal( )
2.source/kernel/signal.c ----------> get_signal_to_deliver( )
3.source/fs/exec.c -------------> do_coredump( )
4.source/fs/binfmt_elf.c -------------> elf_core_dump( )
现在,根据项目要求,我需要用我自己的用户定义的信号处理程序修改默认的信号处理程序定义,处理各种异常(SIGSEGV
, SIGFPE
, SIGABRT
等)导致coredump。此外,我需要用我的处理程序替换默认处理程序来构建内核以保持内核中的更改。
谁能分享一下做这些操作的过程?
提前感谢所有回复者:)
谢谢vlc
SIGFPE, SIGABRT, SIGSEGV和其他一些已经默认生成核心转储,参见signal(7)。然而,许多发行版将核心文件大小资源限制设置为0,禁用核心转储生成。您可以通过以下命令重新启用它:
ulimit -c unlimited
可以传递核心转储应该占用的最大文件系统块数,而不是unlimited
。