main:signal(SIGSEGV,sig);
回调函数:
static void sig(int sig)
{
int i
int nptrs
void *buffer[100]
chat **strings
nptrs=backtrace(buffer,100)
strings=backtrace_symbol(buffer,nptrs)
QString buff;
for(i=0;i<nptrs;++i)
{
打印出来就行
}
free(strings)
exit(-1)
}
终端输入:addr2line 0x地址 -C -f -e 程序名 -f
addr2line -C -f -e 程序名 地址
本文介绍如何在C语言中使用signal SIGSEGV回调函数捕获内存错误,并通过backtrace和addr2line工具解析错误地址,以定位程序源码。通过实例展示了如何打印回溯信息并进行故障排查。
5924

被折叠的 条评论
为什么被折叠?



