栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ backtrace的简单实用案例

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ backtrace的简单实用案例

写作目的:由于搜backtrace时,一堆又生又涩的原理解析,让脑容量只有几KB的我很是头大,所以写了一个简单实用的案例,话不多说,上菜!

backtrace是回溯的意思,就是将程序在堆栈上运行的信息,都记录在小本本上了,哦,不是,是直接打印出来了。

1.代码如下:

#include 
void printf_backtrace(void)
{
        int size = 16;//堆栈的最大size
        void* buf[size];//定义用于存放获取到堆栈信息的指针数组
        int stackNum = backtrace(buf, size);//返回获取到的实际堆栈信息指针数
        char** stackStr = backtrace_symbols(buf, stackNum);//将buf中存放的信息转换为可打印的字符串信息
        
        for (i = 0; i < stackNum; i++)
        {
             printf("stackNum:[%02d] stackStr:%sn", i, stackStr[i]);
        }
        free(stackStr);//释放一整块存放信息的字符串内存
}

2.在需要的地方添加printf_backtrace()即可;

3.需要用addr2line或者c++filt 解析字符串,得到函数名,搞定收工。

友情链接

目前看到最好的是这个:

Linux下通过backtrace获取程序崩溃前堆栈信息_Ccccxc的博客-CSDN博客_linux获取堆栈信息

其次是这两个:

在Linux中如何利用backtrace信息解决问题_jxgz_leo的博客-CSDN博客_backtrace linux

使用backtrace在程序运行时获得函数栈情况_在线笔记-CSDN博客

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665260.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号