linux下调试core dump方式汇总,解决??的问题

我在无意之中发现一位大佬的博客,写得还不错。

于是之中,我看见了他的这个

linux下调试core dump方式汇总,工作必备技能

果不其然,我决定要自己亲手操作一番。

毕竟自己在linux (ubuntu) 使用多年,编程语言还是有比较多的,精通的都没有,例如说c/c++. java,python  还有js (其实js算不上,哈哈),好嘞 ,说正事!

在我 决定写一个测试 程序时,也就是比较简单的

#include <stdio.h>

int main(){

	int *p = NULL;
	*p = 0;
	printf("bad\n")
	return 0;
}

当时,我是 加了编译选项的,也就是所谓的 -g  嘛

这个在上学的那会,老师还是教过的。

可是,我按照上文给的链接的时候,啥也没出来?

??:0

这是什么情况?

凡事都得亲自操作,这是真的?  我想应该跟我的操作系统有关吧!我决定上网找找看!

在这个链接中在程序内部的-pie二进制文件中获取addr2line的地址

给出了,这样一个提示,说是在编译的时候,加个选项!

 

--tip:

现在在ubuntu 18.04上使用时,addr2line给出了很多??:0 。 我对backtrace_symbols(3) linux函数给出的人类可读格式不感兴趣,我想要可以在必要时使用单独分发的调试符号(剥离到单独的.dbg文件)进行解码的简洁格式。

我可以使用-no-pie编译,但我不想这样做。 看来这是我们在生产中不想要的东西。

我了解到,如果对于每个指针(上面的array[i] )我都从/proc/<pid>/maps删除值并将其转换回十六进制,那么我会得到addr2line可以理解的地址。 

 

--end

按照上面博客解决方法其实还有,就是用偏移量的方式,这个我还去找怎么解决呢?

 

附上:

如何在C ++中直接使用addr2line

 

最后,感谢大佬的辛勤劳作,有你们的坚持与努力,我们才会更棒!一起加油吧!!奥利给

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Teleger

你的支持是我前进的方向

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

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

打赏作者

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

抵扣说明:

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

余额充值