Rational Purify non riesce a passare alle perdite di memoria
-
08-06-2019 - |
Domanda
Quindi la mia azienda utilizza un programma deliziosamente pieno di bug chiamato Rational Purify (come plugin per Microsoft Visual Developer Studio) per gestire le perdite di memoria.Il programma è progettato per consentirti di fare clic su una perdita di memoria dopo averla riscontrata, quindi passare alla riga su cui si verifica la perdita.
Sfortunatamente Purify non funziona correttamente e Purify non passerà al punto in cui si è verificata la perdita, ma menziona solo la classe e il metodo in cui si è verificata la perdita.Sfortunatamente, a volte questo è utile quanto assumere una guida per aiutarti a cacciare gli orsi e fargli indicare la foresta e dirti che ci sono orsi lì.
Qualcuno con esperienza con Purify ha idea di come potrei risolvere questo problema o ha un buon manuale da consultare?
Soluzione
Generalmente hai due opzioni, una esclude i moduli DLL dalla strumentazione in Purify, a volte aiuta.Il secondo è ottenere BoundsChecker, questo compila la strumentazione del tempo molto più lentamente ma il livello di dettaglio è migliore di un ordine di grandezza.
In genere utilizziamo Purify al momento del check-in, del controllo di integrità e di BoundsChecker quando sappiamo che esiste un bug/arresto anomalo.
BoundsChecker ha alcune caratteristiche interessanti come solo i file di strumenti A.cpp e B.cpp, escluso tutto il resto.
Tieni presente che nessuna di queste due applicazioni funziona su sistemi operativi a 64 bit e BoundsChecker non verrà installato su sistemi operativi a 64 bit.Molto frustrante se si passa allo sviluppo nativo a 64 bit con porta posteriore a 32 bit!
Altri suggerimenti
Purify è come un coltello svizzero.Se sai come usarlo, otterrai alcuni risultati, non i migliori ma comunque risultati.Se non lo fai, si bloccherà, perché è solo un altro programma in esecuzione su Windows.
Alla fine avrai bisogno di molta pazienza, ricostruzioni e un po’ di fortuna.
Purify viene fornito con uno script chiamato ScanVSSolutionForPurifyPlus.pl che garantirà che i file di progetto abbiano tutte le impostazioni corrette affinché Purify funzioni correttamente.Se non l'hai eseguito, provalo.
(Ho utilizzato personalmente ScanVSSolutionForPurifyPlus.pl su una soluzione di grandi dimensioni e ha funzionato a meraviglia.Un avvertimento:quando gli dai il nome del tuo .sln
file, potrebbe essere necessario fornirgli il percorso completo.)
Sei sicuro di avere una build di debug?O piuttosto hai tutti i PDB abilitati?Prova WindDbg sul tuo eseguibile e controlla con il comando !lmi cosa è visibile.
L'intero codice è adeguatamente strumentato?
Considera anche l'utilizzo di qualcos'altro come rilevatore di perdite visivo gratuito o lo strumento LeakDiag di Microsoft.
Ho usato Purify circa 5 anni fa.Allora era davvero traballante.Continuavano a promettere di correggere tutti i bug nella "prossima versione".Alla fine ci abbiamo rinunciato.Ci si può solo chiedere se abbiano utilizzato i propri strumenti di QA sui loro prodotti.Oh, che ironia...