GDB - 我可以在内存中找到大数据元素

时间:2012-07-23 13:40:33

标签: c gdb

我有一个程序,它有大量静态定义的变量。如果我在GDB中启动它,在main中有一个断点,然后运行pmap,我看到已经分配了大约100MB的数据:

08838000 107576K rw---    [ anon ]

我已经发现了一堆具有巨大静态定义数组的函数(例如200,000英寸)并且在我找到它们时将它们删除了。

有没有办法找出堆/数据段上最大的项目是什么?在GDB中还是通过任何其他方式?

1 个答案:

答案 0 :(得分:5)

可以使用目标代码检​​查实用程序(如nm(1):

)找到信息
nm --size-sort <object-file.o>

此外,如果有足够的调试信息,objdump可以为完全链接的程序提供额外的见解。

实用程序通常是特定于目标平台的,因此在进行交叉编译时必须注意使用正确的程序(例如x86_64-linux-gnu-gcc-nm而不仅仅是nm)。