gdb core dump backtrace address meaing

2016-02-05 09:57:10 +08:00
 cexia
程序崩溃了,生成了 core 文件
g++ -O3 ,不是-g

# gdb XXX core.xxx
( gdb ) bt

#0 0x00007feba6619d5f in __strlen_sse42 () from /lib64/libc.so.6
#1 0x00007feba6fcdf20 in std::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&) () from /usr/lib64/libstdc++.so.6
#2 0x00007feba77eb27a in Foo::Bar(InterestField const*) () from ./foobar.so
#3 0x00007feba77e02e5 in PolicyThreadProc(void*) () from ./foobar.so
#4 0x00007feba6881851 in start_thread () from /lib64/libpthread.so.0
#5 0x00007feba65cf90d in clone () from /lib64/libc.so.6

想请教一下:
类似于 0x00007feba77eb27a 的地址指向含义是什么?
当前情况下,有什么办法可以获取到#2 参数 InterestField const pointer 指向内存的信息,用 x 命令查看?
1213 次点击
所在节点    问与答
2 条回复
bengol
2016-02-05 10:04:49 +08:00
'试试 addr2line
simpx
2016-02-05 11:54:17 +08:00
1. 没用-g ,是没有 debug info 的,没法知道地址对应的行号。可以尝试加-g 重新编译一个,再用 addr2line

2.重新编译后,可能 add2line 也对应不上。在当前情况下,直接看汇编代码也是可以看到整个函数的状况的。你可以试试"f 2",如果 Foo::Bar 是静态函数,可以用"info reg rdi"拿第一个参数,如果 Foo::Bar 是个成员函数,用"info reg rsi"。拿到后在 x 查看

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/255483

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX