(这个问题与从 valgrind 输出中过滤掉垃圾 https://stackoverflow.com/questions/34325305/filtering-out-junk-from-valgrind-output).
我正在尝试调试一个大型项目中的内存泄漏,该项目大部分不在我的掌控范围内——它是一个代码库的分支,大约有数百万行代码,尽管其中大部分可能与我正在研究的一小部分。由于用手查看它非常困难,因此我尝试使用 valgrind 来追踪泄漏。
问题是堆栈跟踪如下所示:
==83597== 920 bytes in 1 blocks are possibly lost in loss record 750 of 864
==83597== at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==83597== by 0x548EF93: myproject_malloc (mysourcefile.c:48)
==83597== by 0x4F13FD5: ??? (in /path/to/project/library-version.so)
==83597== by 0xFFEFFFD5F: ???
==83597== by 0x38F: ???
==83597== by 0xFFEFFFE5F: ???
==83597== by 0xF: ???
==83597== by 0x54542FF: ??? (in /path/to/project/library-version.so)
==83597== by 0x4F536CA: ??? (in /path/to/project/library-version.so)
==83597== by 0x64B981F: ???
==83597== by 0xF: ???
==83597== by 0x54542FF: ??? (in /path/to/project/library-version.so)
是什么可能导致像这样的小地址0xF
, 0x38F
, ETC?我使用的是 Debian 风格的 x86_64 Linux 发行版。我找不到 x86_64 的参考,但到目前为止据我所知 http://static.duartes.org/img/blogPosts/linuxFlexibleAddressSpaceLayout.png,真正的数据不应该从更高的地址开始。
问题是 Makefile 正在打开fomit-frame-pointer
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)