问题描述
如果存在SIGSEGV的问题,我们要求“在程序内部打印回跟踪信息”。 基于堆栈溢出中提供的链接集 我正在通过print_trace()函数使用“ backtrace_symbols_fd()”
void print_trace() {
char pid_buf[30];
sprintf(pid_buf,"%d",getpid());
char name_buf[512];
name_buf[readlink("/proc/self/exe",name_buf,511)]=0;
int child_pid = fork();
if (!child_pid) {
dup2(2,1); // redirect output to stderr
fprintf(stdout,"stack trace for %s pid=%s\n",pid_buf);
execlp("gdb","gdb","--batch","-n","-ex","thread","bt",pid_buf,NULL);
abort(); /* If gdb Failed to start */
} else {
waitpid(child_pid,NULL,0);
}
}
它不是在程序内部打印print_trace()信息,而只是在打印SIGSEGV消息 &信号编号。
能否请您指出内部发生了什么问题
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)