如何在linux中打印程序堆栈信息

​ 如何在linux中打印程序堆栈信息,用于调试。
有时候在写完代码之后需要自己手动测试功能,在linux环境中往往需要gdb调试打断点查看堆栈。往往公司的服务器一般是多人同时使用的。往往性能不是太强。gdb调试的时候载入的时候Reading symbols from的时候往往会卡那么一会儿虽然时间不长,但是很烦。我在这里写了简单实用打印堆栈的工具类。算是减少一点工作量。

​ 偶尔会遇到程序崩溃的情况,但是在一些线上部署环境的时候通常调试环境很复杂,通常由于特殊情况下core文件无法产生,或者无法拿到。这个类也可以添加到日记类中,在程序奔溃前用于打印出具体信息。

​ 首先在linux下有个3个函数可以用于配合打印堆栈信息。

//linux 下 使用man可以查看具体详细信息,这里信息大长了。我就截取一部分把。
/*backtrace()  returns a backtrace for the calling program, in the array pointed to by buffer.*/
int backtrace(void **buffer, int size);

/*Given the set of addresses returned by backtrace() in buffer, backtrace_symbols() translates the addresses into an array of strings that  describe  the  addresses  symbolically.
This array is malloc(3)ed by backtrace_symbols(), and must be freed by the caller.*/
char **backtrace_symbols(void *const *buffer, int size);

/*backtrace_symbols_fd()  takes  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值