如何在 Linux 内核中用用户定义的处理程序替换默认处理程序来处理生成核心转储的异常?
我正在研究“在 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( )
现在,根据项目要求,我需要使用我自己的用户定义的信号处理程序来修改默认信号处理程序定义,该处理程序处理各种异常(SIGSEGV
,SIGFPE
, SIGABRT
等)导致 coredump。此外,我需要构建内核以保留内核中的更改,并用我的处理程序替换默认处理程序。
有人可以分享一下执行这些操作的程序吗?
提前感谢所有回复者:)
谢谢 虚拟LC
I am working on "Creation of Postmortem data logger on Linux platform". I posted a question regarding this project previously also. There, i got the call flow mechanism of core dump file creation in RHEL version: 2.6.18.128-el5.
It follows as:
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( )
Now,as per project requirements, i need to modify the default signal handler definitions with my own user defined signal handler that handles various exceptions (SIGSEGV
, SIGFPE
, SIGABRT
etc) causing coredump. Further, i need to build the kernel for keeping the changes in kernel with my handler replacing default handler.
Can anybody please share the proceedings to do those operations ?
Advance thanks to all repliers:)
Thanks
vlc
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
SIGFPE、SIGABRT、SIGSEGV 和其他一些默认情况下已经生成核心转储,请参阅 信号(7)。然而,许多发行版将核心文件大小资源限制设置为 0,从而禁用核心转储生成。您可以通过以下方式重新启用它:
您可以传递核心转储应占用的文件系统块的最大数量,而不是
无限制
。SIGFPE, SIGABRT, SIGSEGV and some others already generate a core dump by default, see signal(7). However, many distros set the core file size resource limit to 0, disabling core dump generation. You can reenable it by:
Instead of
unlimited
, you can pass the maximum number of filesystem blocks core dumps should take.