2013-02-09 13 views
6

Come posso guardare un processo specifico per sapere quali risorse utilizza in fase di esecuzione (come suoni, immagini, cursori e chiavi di registro)?Guarda le risorse utilizzate da exe dll

Devo fare quello programmaticamente utilizzando C# (ad esempio utilizzando l'API di Windows o qualsiasi libreria di terze parti).

Qualsiasi aiuto è apprezzato. Grazie.

+0

L'idea di un debugger è di aiuto? (Ad esempio guardare le chiamate alle funzioni dell'API Win come 'LoadCursor')? Il programma \ dll forse anche crittografato e non debuggable –

+0

Penso che questo dipenda anche dall'ambiente: nativo o gestito. –

+0

Hai provato Process Monitor da SysInternals? –

risposta

3

Vorrei attenermi ai contatori delle prestazioni. Ci sono quelli per

  • memoria
  • GDI maniglie (Bitmap, font, ...)
  • Maniglie (file, chiave di registro, Evento, Mutex, Socket, di processo, ...)
  • Windows (User Objects)

Il tipo esatto non può essere determinato utilizzando i contatori delle prestazioni, ma può darti un suggerimento se stai perdendo qualcosa. Se vuoi sapere quali maniglie puoi usare maniglie da SysInternals che ti daranno una bella resa per processo che puoi analizzare.

Se si desidera correggere le perdite di handle, è necessario utilizzare un debugger (Windbbg) e utilizzare l'estensione! Man per iniziare a tenere traccia di tutti gli stack di chiamate aquire/release per ogni handle in modo da poter ottenere una statistica che gestisce stato assegnato ma non ancora liberato.

La tua domanda è un po 'troppo ampia perché la tattica esatta per inchiodare una perdita di risorse dipende dalla natura della perdita. EasyHook è una buona soluzione per tenere traccia di tutte le chiamate di acquisizione/rilascio di risorse e registrarle automaticamente.

Se si desidera automatizzare un debugger con ad es. C# è possibile utilizzare http://wmemoryprofiler.codeplex.com/ che è basicamente un wrapper gestito su Windbg che consente anche di eseguire il self-debug dell'applicazione.

Quando si desidera imparare i principi su come ottenere dati sparsi per varie risorse, è necessario leggere il codice di Process Hacker.

Problemi correlati