0

我正在研究“在 Linux 平台上创建事后数据记录器”。我之前也发布了一个关于这个项目的问题。在那里,我得到了 RHEL 版本中创建核心转储文件的调用流程机制:2.6.18.128-el5。

如下:

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( )

现在,根据项目要求,我需要使用我自己的用户定义的信号处理程序来修改默认信号处理程序定义,该处理程序处理各种导致核心转储的异常(、、等SIGSEGVSIGFPESIGABRT此外,我需要构建内核以使用我的处理程序替换默认处理程序来保持内核中的更改。

任何人都可以分享进行这些操作的程序吗?

提前感谢所有回复者:)

感谢 vlc

4

1 回答 1

1

SIGFPE、SIGABRT、SIGSEGV 和其他一些默认情况下已经生成核心转储,请参阅signal(7)。但是,许多发行版将核心文件大小资源限制设置为 0,从而禁用核心转储生成。您可以通过以下方式重新启用它:

ulimit -c unlimited

而不是unlimited,您可以传递核心转储应采用的文件系统块的最大数量。

于 2011-04-26T19:43:43.403 回答