在程序中打印调用堆栈

本文介绍了一种在程序中打印调用堆栈的方法,有助于理解函数调用流程。通过使用execinfo.h库中的backtrace函数获取当前调用堆栈信息,并结合addr2line工具解析出函数名及源代码位置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  一直以来都没有花太多精力放在学习调试方面,主要还是平时调试的机会相对较少,一般情况下,用strace、gdb、以及通过打印log基本上就能解决问题了,还有就是,与其花精力去提高调试技能,还不如在设计、防御式编程和单元测试等能力去提高,以及提高自已编码的质量,减少BUG的出现或者缩少BUG的范围。

 

  但是,有时使用调试工具并不是为了查找BUG,在阅读和分析源代码时也非常有用,下面的代码演示如何在自已的程序中打印调用堆栈,有时你想知道某一个函数在某一时刻被哪一个函数调用了,只要在这个函数中打印一下调用堆栈即可,在一些不方便使用调试工具的场合(例如程序在开发板上运行时)还是比较有用的。

 

  下面的示例代码我从网络上找来的,我去掉了注释,并在上面加上了我自已的注释,可以通过看注释来了解是怎么实现的,注意在用gcc编译代码时,要加上选项-rdynamic和-g

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值