为什么 addr2line 只适用于函数
我有 addr2line
为函数地址工作:
$ nm -S executable | grep main
08048742 000000a0 T main
$ addr2line -e executable 08048742
/home/blablabla/src/main.c:80
不幸的是,它只有在我提供函数地址时才有效,当传递数据符号的地址(例如 crc 表的地址)时,它永远不能解析文件/行号:
$ nm -S executable | grep tableCRC
080491bc 00000200 r tableCRC
$ addr2line -e executable 080491bc
??:0
我想这种调试信息不包含在数据中,因为此功能可能用于分析回溯,但也许有一个编译器/链接器选项可以强制执行此操作?
我想使用 addr2line 的输出来生成有关文件或模块使用多少内存大小的详细信息(而不是“size”工具报告的全局数字)。
I've got addr2line
working for function addresses:
$ nm -S executable | grep main
08048742 000000a0 T main
$ addr2line -e executable 08048742
/home/blablabla/src/main.c:80
Unfortunately it only works if I supply an address of a function, when passing an address of a data symbol (e.g. the address of a crc table) it can never resolve the file/line number:
$ nm -S executable | grep tableCRC
080491bc 00000200 r tableCRC
$ addr2line -e executable 080491bc
??:0
I guess that that kind of debug information just isn't included for data because this feature is probably intended for analyzing backtraces, but maybe there's a compiler/linker option to force this?
I want to use the output of addr2line
to generate detailed information about how much memory size a file or module uses (instead of the global number reported by the 'size' tool).
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
nm 的
--print-size
和--line-numbers
选项可能就是您正在寻找的。请注意,ELF 对象需要包含
--line-numbers
选项才能工作的调试信息。The
--print-size
and--line-numbers
options to nm are probably what you are looking for.Please note that the ELF object needs to contain debugging information for the
--line-numbers
option to work.