如何解决在程序内部堆叠框架信息/回溯打印,而不使用GDB
如果存在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 举报,一经查实,本站将立刻删除。