当我的程序接收到SIGSEGV信号时,如何转储内核?(运行我的程序的服务器权限非常有限,因此默认禁用核心转储。)
我使用gcore编写了以下代码,但我希望使用C函数。我能以某种方式抓住核心并把它写到某个文件夹吗?
void segfaulthandler(int parameter)
{
char gcore[50];
sprintf(gcore, "gcore -s -c \"core\" %u", getpid());
system(gcore);
exit(1);
}
int main(void)
{
signal(SIGSEGV, segfaulthandler);
}发布于 2011-03-11 23:03:33
除非存在阻止您的硬限制,否则可以使用setrlimit(RLIMIT_CORE, ...)来增加软限制并启用代码转储--这相当于在shell中运行ulimit -c。
https://stackoverflow.com/questions/5279293
复制相似问题