- 论坛徽章:
- 0
|
所有设置均ok(排除ulitmit等问题)
以下代码不能生产core dump
- #include <stdio.h>
- #include <signal.h>
- void cleanupOnSignal(int sig)
- {
- printf("sig=%d\n",sig);
- exit(-1);
- }
- static errcall(void)
- {
- char* p = 0;
- memset(p,0,100);
- }
- int main(void)
- {
- signal(SIGINT, cleanupOnSignal);
- signal(SIGSEGV, cleanupOnSignal);
- signal(SIGABRT, cleanupOnSignal);
- signal(SIGBUS, cleanupOnSignal);
- errcall();
- }
复制代码 屏蔽掉signal几行后就可以了,或者把cleanupOnSignal改为:
- void cleanupOnSignal(int sig)
- {
- printf("sig=%d\n",sig);
- if (sig != SIGABRT) abort();
- }
复制代码 也可以。
貌似应该是某个signal的默认处理函数中做了某些处理来产生core dump。
问题是该如何操作才能在这种情况下正常的生成core dump?
多谢 |
|