c++ backtrace的简单实用案例

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

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

1.代码如下:

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

int main()
{
    printf_backtrace();
    return 0;
}

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

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

友情链接

目前看到最好的是这两个:

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

C++的backtrace - 云+社区 - 腾讯云

其次是这两个:

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

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

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
BackTrack Linux(现在已经更名为Kali Linux)是一款基于Debian的Linux发行版,主要用于网络安全和渗透测试。它集成了大量的渗透测试工具和安全审计工具,方便安全专业人员进行各种网络安全测试和攻击模拟。 安装BackTrack Linux(Kali Linux)可以按照以下步骤进行操作: 1. 下载BackTrack Linux(Kali Linux)的ISO镜像文件。您可以前往官方网站或者其他可靠的下载来源获取ISO镜像文件。 2. 创建一个可启动的USB闪存驱动器或者光盘。您可以使用软件如Rufus、UNetbootin或者Etcher等工具,将ISO镜像文件写入USB闪存驱动器或者刻录到光盘上。 3. 将USB闪存驱动器插入您的计算机或者将光盘放入光驱,并重启计算机。 4. 进入计算机的BIOS设置界面。您需要将计算机的启动顺序设置为从USB闪存驱动器或者光盘启动。 5. 保存设置并重新启动计算机。计算机将从BackTrack Linux(Kali Linux)的安装介质启动。 6. 在启动菜单中选择安装BackTrack Linux(Kali Linux)。您可以选择图形化安装或者文本安装,根据自己的喜好和需求进行选择。 7. 按照安装向导的提示,进行分区设置、用户创建、安装源选择等配置。 8. 等待安装程序完成,然后重新启动计算机。 9. 完成安装后,您可以登录到BackTrack Linux(Kali Linux)系统,根据需要进行进一步的配置和使用。 请注意,BackTrack Linux(Kali Linux)是针对网络安全专业人员和渗透测试人员设计的操作系统,使用时需遵循法律和道德规范,仅在合法授权和合规的情况下使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一刀流剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值