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?

È stato utile?

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...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top