首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转储核心如果SIGSEGV (在C)?

转储核心如果SIGSEGV (在C)?
EN

Stack Overflow用户
提问于 2011-03-11 23:01:38
回答 1查看 2.1K关注 0票数 2

当我的程序接收到SIGSEGV信号时,如何转储内核?(运行我的程序的服务器权限非常有限,因此默认禁用核心转储。)

我使用gcore编写了以下代码,但我希望使用C函数。我能以某种方式抓住核心并把它写到某个文件夹吗?

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

发布于 2011-03-11 23:03:33

除非存在阻止您的硬限制,否则可以使用setrlimit(RLIMIT_CORE, ...)来增加软限制并启用代码转储--这相当于在shell中运行ulimit -c

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5279293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档