什么会导致 Valgrind 堆栈跟踪中出现奇怪的地址?
What can cause strange addresses in a Valgrind stack trace?
(此问题与相关)。
我正在尝试调试一个大项目中的内存泄漏问题,该项目几乎不在我的掌控之中 --- 它是一个代码库的分支,大约有数百万行代码,尽管其中大部分可能不是与我正在处理的小部分无关。由于手动查看它非常困难,我正在尝试使用 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
等小地址?我正在使用 Debian 风格的 x86_64 Linux 发行版。我找不到 x86_64 的参考,但到目前为止 as I can tell,真正的数据不应该在更高的地址开始。
问题是 Makefile 正在打开 fomit-frame-pointer
。
(此问题与
我正在尝试调试一个大项目中的内存泄漏问题,该项目几乎不在我的掌控之中 --- 它是一个代码库的分支,大约有数百万行代码,尽管其中大部分可能不是与我正在处理的小部分无关。由于手动查看它非常困难,我正在尝试使用 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
等小地址?我正在使用 Debian 风格的 x86_64 Linux 发行版。我找不到 x86_64 的参考,但到目前为止 as I can tell,真正的数据不应该在更高的地址开始。
问题是 Makefile 正在打开 fomit-frame-pointer
。