例如如下断言信息
1: (()+0xf630) [0x7f0625547630] from /lib64/libpthread.so.0
2: (std::_Rb_tree_increment(std::_Rb_tree_node_base const*)+0x21) [0x7f0624c68532] from /opt/h3c/lib/libstdc++.so.6
按照如下步骤提取信息
1.地址转换
2: (std::_Rb_tree_increment(std::_Rb_tree_node_base const*)+0x21) [0x7f0624c68532] from /opt/h3c/lib/libstdc++.so.6
0x21 == 33
2.切换代码版本,重新编译对应库文件(带调试信息)
make xxxx -j12
3.gdb打开新编译库
gdb xxxx.so
4.反汇编 std::_Rb_tree_increment函数
disassemble std::_Rb_tree_increment
0x00007fc054fbda99 <+25>: callq 0x7fc054e7f210 <ngx_shmtx_destroy@plt>
0x00007fc054fbda9e <+30>: mov (%rbx),%rax
0x00007fc054fbdaa1 <+33>: mov 0x18(%rax),%rdi
0x00007fc054fbdaa5 <+37>: test %rdi,%rdi
0x00007fc054fbdaa8 <+40>: je 0x7fc054fbdab2 <exit_shm()+50>
5.根据1计算偏移地址查询:
0x00007fc054fbdaa1 <+33>: mov 0x18(%rax),%rdi
6.使用info line指令
info line * 0x00007fc054fbdaa1
Line 239 of ".../xxxx.cc"