2012-11-16 7 views
8

Sto usando valgrind 3.8.1 con Mac OS 10.8.2 Ho installato Valgrind utilizzando Homebrew.Supporto Valgrind per Mac OS 10.8?

Ma quando provo a eseguire il valgrind sul mio codice, ottengo un sacco di errori dalle librerie che non ho nemmeno usato nel mio codice.

valgrind --leak-check=full ./a.out 

==92079== 
==92079== HEAP SUMMARY: 
==92079==  in use at exit: 70,861 bytes in 362 blocks 
==92079== total heap usage: 529 allocs, 167 frees, 75,151 bytes allocated 
==92079== 
==92079== 16 bytes in 1 blocks are definitely lost in loss record 7 of 85 
==92079== at 0x54D7: malloc_zone_malloc (in /usr/local/Cellar/valgrind/3.8.1/lib/valgrind/vgpreload_memcheck-amd64-darwin.so) 
==92079== by 0x373381: recursive_mutex_init (in /usr/lib/libobjc.A.dylib) 
==92079== by 0x372025: _objc_init (in /usr/lib/libobjc.A.dylib) 
==92079== by 0xBB27: libSystem_initializer (in /usr/lib/libSystem.B.dylib) 
==92079== by 0x7FFF5FC13377: ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) (in /usr/lib/dyld) 
==92079== by 0x7FFF5FC13761: ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) (in /usr/lib/dyld) 
==92079== by 0x7FFF5FC1006D: ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&) (in /usr/lib/dyld) 
==92079== by 0x7FFF5FC0FFC3: ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&) (in /usr/lib/dyld) 
==92079== by 0x7FFF5FC0FEB9: ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) (in /usr/lib/dyld) 
==92079== by 0x7FFF5FC01F9D: dyld::initializeMainExecutable() (in /usr/lib/dyld) 
==92079== by 0x7FFF5FC05B03: dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) (in /usr/lib/dyld) 
==92079== by 0x7FFF5FC01396: dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*) (in /usr/lib/dyld) 
..... 
..... 
..... 
..... 
==92079== 
==92079== LEAK SUMMARY: 
==92079== definitely lost: 16,816 bytes in 16 blocks 
==92079== indirectly lost: 1,168 bytes in 5 blocks 
==92079==  possibly lost: 4,941 bytes in 67 blocks 
==92079== still reachable: 47,936 bytes in 274 blocks 
==92079==   suppressed: 0 bytes in 0 blocks 
==92079== Reachable blocks (those to which a pointer was found) are not shown. 
==92079== To see them, rerun with: --leak-check=full --show-reachable=yes 
==92079== 
==92079== For counts of detected and suppressed errors, rerun with: -v 
==92079== ERROR SUMMARY: 21 errors from 21 contexts (suppressed: 0 from 0) 

Qualcuno può mostrare come eliminare questi errori per Mac OS 10.8? (O solo mostrare gli errori per il mio codice)

risposta

2

valgrind v3.9.0 risolve il problema. Sebbene le note di rilascio ufficiali per v3.9.0 affermino che il supporto per Mac OSX 10.8 è stato migliorato. Ma sembra funzionare bene anche su Mac OSX 10.9.

È possibile scaricare l'ultima versione sul Homebrew:

brew update 
brew install valgrind 
2

dispiace che questo non sarà quello che si desidera ascoltare, ma se si esegue valgrind ./a.out si dovrebbe vedere l'uscita lungo le linee di

==18604== WARNING: Support on MacOS 10.8 is experimental and mostly broken. 
==18604== WARNING: Expect incorrect results, assertions and crashes. 
==18604== WARNING: In particular, Memcheck on 32-bit programs will fail to 
==18604== WARNING: detect any errors associated with heap-allocated data. 

Anche se hai soppresso ciò che volevi sopprimere, Valgrind molto probabilmente non ti aiuterà nel debug del tuo programma. Xcode viene fornito con il proprio strumento di analisi della memoria chiamato Strumenti se si vuole utilizzarlo.