请问backtrace什么情况下会出错?急!

loveruru loveruru 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
我们程序在LINUX 下运行

服务器程序宕机时候调用的打印函数调用栈的函数,一直都没有问题,但最近服务器频繁宕机,可堆栈居然打印不出来,网上也搜不到解答。

由于代码拷不出来,凭记忆写的伪代码。


void *array[1024];
char **strings = NULL;

打印("=====Debug Msg Begin=====");

int size = backtrace(array, SIZE);
strings = backtrace_symbols(array, size );

for (j = 0; j < size ; j++)
{
打印strings[j]的内容;
}
打印("=====Debug Msg End=====");


输出结果是=====Debug Msg Begin=====后面就没了。


而更奇怪的是今天的日志倒是把堆栈打出来了,但问题追踪到代码里,居然指向是int size = backtrace(array, SIZE);

就是说服务器由于未知原因宕机后,走到int size = backtrace(array, SIZE);时候再次宕机而打出的堆栈内容。



麻烦各位高手帮忙分析下什么原因呢?
...全文

相关推荐

评论 5
收藏 已收藏
分享
返回顶部
loveruru
Linux/Unix社区 23,224 成员 74,535 内容