2010-04-15 17 views
10

Qualcuno sa di un profiler e un rilevatore di perdite che funzionerà con il codice VS2010? Preferibilmente uno che gira su Win7.Rilevatore di perdite/profilometro VS2010

Ho cercato qui e in google. Ho trovato un rilevatore di perdite che funziona (Memory Validator) ma non ne sono troppo colpito. Per prima cosa mostra un sacco di perdite di menu e cose che sono abbastanza fiducioso non sono reali. Ho anche provato GlowCode ma è solo un profiler e si rifiuta di installare su win7.

Ero abituato ad utilizzare AQtime. Aveva tutto ciò di cui avevo bisogno, rilevamento di perdite di memoria/risorse, profilazione di varie cose, analisi statica, ecc. Sfortunatamente ora fornisce risultati fasulli.

Il mio problema principale è che VS2010 sta dicendo che ci sono perdite in un programma che non ne aveva in VS2005. Sono quasi sicuro che si tratti di falsi positivi, ma non riesco a trovare un buon strumento per verificarlo. Memory Validator non mostra gli stessi e la segnalazione di perdite da VS non sembra razionale.

+0

forse varrebbe la pena fare una valutazione di Parallel Studio da Intel che è disponibile per 32 e per piattaforme a 64 bit. –

risposta

1

Personalmente, sono appassionato di DevPartner. Se lavori in una grande azienda, forse puoi convincerli a pagare la licenza pesante. È costoso, ma è molto molto robusto.

0

ho usato diverse alternative commerciali e, anche se in grado di fornire risultati fantastici, ma anche spesso semplicemente non riescono a lavorare a causa di motivi sconosciuti:

  • razionale Quantità: prodotto fantastico per il profiling delle prestazioni, ma non sono riusciti a rilasciare il nuovo versioni durante diversi anni, e spesso (nel mio caso) il software spesso si rifiutava di funzionare
  • AQTime: anche molto buono (inferiore alla Rational Quantity) ma a volte si rifiuta di lavorare per ragioni sconosciute.
  • Prestazioni validatore: stesso

Negli ultimi anni sono tornato al modo piuttosto grezzo di campionamento dell'applicazione. Questo non è perfetto come usare la strumentazione, ma è molto più veloce, può essere eseguito su qualsiasi applicazione e funziona sempre. Il mio preferito è "Molto assonnato" (http://www.codersnotes.com/sleepy) ma anche Luke StackWalker (http://lukestackwalker.sourceforge.net/) è abbastanza buono. Poiché le applicazioni possono essere eseguite immediatamente e senza un rallentamento apprezzabile, il ciclo "modifica app, profilo" è molto breve ed efficiente.

Per trovare perdite di memoria, ci sono diversi strumenti in Windows che è possibile utilizzare. Anche in questo caso, sono tutt'altro che perfetti e spesso possono solo esaminare le applicazioni in esecuzione dall'esterno, non limitandosi a segnalare perdite alla fine dell'applicazione. Cerca "Microsoft Debugging Tools" (UMDH, LeakDiag, gflags). Personalmente, trovo molto più semplice scrivere solo il mio gestore di memoria e lasciare che riporti le perdite alla fine dell'applicazione. Non è così difficile da scrivere. Quello che devi fare è:

  • implementare la nuova corretta e cancellare gli operatori (penso che si dovrebbe implementare 4 nuovo e 4 cancellare operatori)
  • Nell'attuazione della nuova, ottenere lo stack di chiamate (cercare StackWalk) e memorizzarlo con la memoria allocata.
  • Creare una classe che avvia il gestore della memoria nel costruttore e segnalare tutte le perdite (incluso lo stack di chiamate) nel distruttore.
  • Crea una variabile globale di quel tipo di classe. Potrebbe essere necessario renderlo una variabile globale speciale usando un #pragma (init_seg).
0

Non sei sicuro di come collegare a questo, che ho già postato in risposta ad una domanda simile:

È possibile utilizzare UMDH. exe per acquisire e confrontare istantanee del processo prima e dopo che si verifichi una perdita. Funziona meglio con i binari di Debug, ma è fattibile con i percorsi di simboli forniti dalla Release correttamente impostati - ti darà i blocchi di chiamata della memoria allocati tra la 1a e la 2a istantanea.

http://support.microsoft.com/kb/268343

Questo approccio ha il vantaggio di essere libero.

3

Noah, come Ori menzionato, DevPartner Studio di Micro Focus ha sia il rilevamento delle perdite che altre funzionalità di profilazione di runtime. A differenza dei prezzi elevati che DPS aveva in Compuware, ora puoi concedere in licenza solo i profiler del runtime e non l'intera suite se è ciò di cui hai bisogno. Plug Shameless: lavoro con il team DevPartner. Il nostro supporto per le applicazioni a 64 bit viene fornito nella versione 10.5 del 4 febbraio 2011. Cerca notizie sulla release e download eval su http://www.DevPartner.com.

Problemi correlati