假设你的堆栈其中的一条输出如下:
libYourLibName.so(_ZN28YourMethodNameEv+0x2c)[0x2aac22cda14c]
lib名字(出错的方法名+偏移量)[运行时的具体地址]; 这里的方法名系统给追加了一些自己的前缀和后缀。
1。使用make debug,产生带有debug符号的lib文件;
2。使用nm找出_ZN28YourMethodNameEv对应的虚拟内存的地址;假设是0x800
3。计算出错的位置:0x800+0x2c = 0x82c;
4。使用addr2line -e libYourLibName.so运行,然后再输入0x82c,addr2line会输出对于得文件和行号