c之GDB之我可以在内存中找到大数据元素吗
kuangbin
阅读:45
2024-11-01 17:39:52
评论:0
我有一个程序,其中包含大量静态定义的变量。如果我在 GDB 中启动它,在 main 中设置一个断点,然后运行 pmap,我会看到已经分配了大约 100MB 的数据:
08838000 107576K rw--- [ anon ]
我已经找到了一堆具有大量静态定义数组(例如 200,000 个整数)的函数,并在找到它们时删除了它们。
有什么方法可以找出堆/数据段上最大的项目是什么?在 GDB 中还是通过任何其他方式?
请您参考如下方法:
可以使用像 nm(1) 这样的目标代码检查实用程序找到这些信息:
nm --size-sort <object-file.o>
此外,如果有足够的调试信息,objdump 可以为完全链接的程序提供额外的见解。
实用程序通常是特定于目标平台的,因此在交叉编译时必须注意使用正确的程序(即像 x86_64-linux-gnu-gcc-nm 而不仅仅是 nm).
声明
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。



