gpt4 book ai didi

linux - 显示地址的 Valgrind 输出不是针对错误的代码

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:30:39 24 4
gpt4 key购买 nike

我在我的程序上运行 Valgrind。它向我显示了两个错误,但只提到了针对它们的地址,甚至在调试版本中也没有提到实际代码。

请问可以吗?帮助我理解它说的是什么以及如何找到错误的代码行?

输出是

==23002== Memcheck, a memory error detector.  
==23002== Copyright (C) 2002-2005, and GNU GPL'd, by Julian Seward et al.
==23002== Using LibVEX rev 1575, a library for dynamic binary translation.
==23002== Copyright (C) 2004-2005, and GNU GPL'd, by OpenWorks LLP.
==23002== Using valgrind-3.1.1, a dynamic binary instrumentation framework.
==23002== Copyright (C) 2000-2005, and GNU GPL'd, by Julian Seward et al.
==23002== For more details, rerun with: -v
==23002==
==23002== Invalid read of size 4
==23002== at 0x8AAE6D: open_path (in /lib/ld-2.3.4.so)
==23002== by 0x8AB68B: _dl_map_object (in /lib/ld-2.3.4.so)
==23002== by 0x8AF307: openaux (in /lib/ld-2.3.4.so)
==23002== by 0x8B066D: _dl_catch_error (in /lib/ld-2.3.4.so)
==23002== by 0x8AF5A9: _dl_map_object_deps (in /lib/ld-2.3.4.so)
==23002== by 0x8A6459: dl_main (in /lib/ld-2.3.4.so)
==23002== by 0x8B3DF4: _dl_sysdep_start (in /lib/ld-2.3.4.so)
==23002== by 0x8A53EF: _dl_start (in /lib/ld-2.3.4.so)
==23002== by 0x8A47C6: (within /lib/ld-2.3.4.so)
==23002== Address 0x2F8BBBF8 is not stack'd, malloc'd or (recently) free'd
==23002==
==23002== Process terminating with default action of signal 11 (SIGSEGV)
==23002== Access not within mapped region at address 0x2F8BBBF8
==23002== at 0x8AAE6D: open_path (in /lib/ld-2.3.4.so)
==23002== by 0x8AB68B: _dl_map_object (in /lib/ld-2.3.4.so)
==23002== by 0x8AF307: openaux (in /lib/ld-2.3.4.so)
==23002== by 0x8B066D: _dl_catch_error (in /lib/ld-2.3.4.so)
==23002== by 0x8AF5A9: _dl_map_object_deps (in /lib/ld-2.3.4.so)
==23002== by 0x8A6459: dl_main (in /lib/ld-2.3.4.so)
==23002== by 0x8B3DF4: _dl_sysdep_start (in /lib/ld-2.3.4.so)
==23002== by 0x8A53EF: _dl_start (in /lib/ld-2.3.4.so)
==23002== by 0x8A47C6: (within /lib/ld-2.3.4.so)
==23002==
==23002== Jump to the invalid address stated on the next line
==23002== at 0x246: ???
==23002== Address 0x246 is not stack'd, malloc'd or (recently) free'd
==23002==
==23002== Process terminating with default action of signal 11 (SIGSEGV)
==23002== Bad permissions for mapped region at address 0x246
==23002== at 0x246: ???
==23002==
==23002== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)
==23002== malloc/free: in use at exit: 0 bytes in 0 blocks.
==23002== malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
==23002== For counts of detected errors, rerun with: -v
==23002== All heap blocks were freed -- no leaks are possible.

最佳答案

那个地址看起来是假的。忘记 valgrind,启动 gdb找到您的程序出现段错误的位置。

关于linux - 显示地址的 Valgrind 输出不是针对错误的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2342411/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com