Вывод Valgrind показывает адреса, а не код ошибок - PullRequest
1 голос
/ 26 февраля 2010

Я использую 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.  

Ответы [ 2 ]

1 голос
/ 27 февраля 2010

Отладочной информации нет, поскольку указанный код находится в библиотеке ld-2.3.4.so (это динамический компоновщик).

Мне кажется, ваш исполняемый файл связан с поврежденным файлом динамической библиотеки (или пытается загрузить файл, который не является динамической библиотекой, с помощью этого механизма).

1 голос
/ 26 февраля 2010

Этот адрес выглядит поддельным. Забудьте valgrind, запустите gdb , чтобы узнать, где находится ваша программа segfaulting.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...