首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么addr2line只对函数起作用

为什么addr2line只对函数起作用
EN

Stack Overflow用户
提问于 2011-08-03 15:32:27
回答 1查看 1.4K关注 0票数 6

我让addr2line为函数地址工作:

代码语言:javascript
复制
$ nm -S executable | grep main
08048742 000000a0 T main
$ addr2line -e executable 08048742
/home/blablabla/src/main.c:80

不幸的是,它只有在我提供函数的地址时才起作用,当传递数据符号的地址(例如crc表的地址)时,它永远不能解析文件/行号:

代码语言:javascript
复制
$ nm -S executable | grep tableCRC
080491bc 00000200 r tableCRC
$ addr2line -e executable 080491bc
??:0

我猜这种调试信息不包括在数据中,因为这个功能可能是为了分析回溯,但可能有一个编译器/链接器选项来强制执行这一点?

我想使用addr2line的输出来生成有关文件或模块使用的内存大小的详细信息(而不是' size‘工具报告的全局数字)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-08-03 20:06:30

nm--print-size--line-numbers选项可能就是您要找的。

请注意,ELF对象需要包含调试信息,--line-numbers选项才能正常工作。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6923067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档