在终止进程之前保存gmon.out

在终止进程之前保存gmon.out,第1张

终止进程之前保存gmon.out

首先,我要感谢@wallyk给了我很好的初始指示。我解决了如下问题。显然,libc的gprof出口处理程序称为

_mcleanup
。因此,我为SIGUSR1注册了一个信号处理程序(未由第三方库使用),并调用
_mcleanup
_exit
。完美的作品!该代码如下所示:

#include <dlfcn.h>#include <stdio.h>#include <unistd.h>void sigUsr1Handler(int sig){    fprintf(stderr, "Exiting on SIGUSR1n");    void (*_mcleanup)(void);    _mcleanup = (void (*)(void))dlsym(RTLD_DEFAULT, "_mcleanup");    if (_mcleanup == NULL)         fprintf(stderr, "Unable to find gprof exit hookn");    else _mcleanup();    _exit(0);}int main(int argc, char* argv[]){    signal(SIGUSR1, sigUsr1Handler);    neverReturningLibraryFunction();}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5006590.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-14
下一篇 2022-11-14

发表评论

登录后才能评论

评论列表(0条)

保存