2010-12-01 46 views
19

Les objets GDI présentant des fuites peuvent être vus à partir du gestionnaire de tâches ou à partir du Process Explorer. (Eh bien, vous ne voyez pas les fuites, mais vous pouvez voir si l'objet uasage compte va continuellement.)Est-il possible de détecter les fuites GDI à partir du débogueur Visual Studio?

Il existe aussi des outils qui permettent de visualiser les objets GDI par type, tels que GDIView [a], DeLeaker, DPUS ou le GDIDebug (sourecode). [A] Notez que je considère GDIView comme un excellent outil pour faire le travail d'identification et de confirmation des fuites de GDI existantes, mais cela ne vous aide pas vraiment à trouver le code qui fuit dans les grandes applications. (Je vais aussi noter ici que l'outil fonctionne très bien et semble bien comportés, bien que sa page d'accueil est un littlebit bizarre (-:.)

Il y a aussi un plugin WinDBG appelé leaktrap qui utilise MSs Detours Library

I aussi savoir (et ont utilisé) Resource Profiler AQTime qui permet de détecter les fuites de ressources GDI (et autres) dans une application, y compris les traces de la pile pour les appels qui fuient

Maintenant, ma vraie question est: Est-il possible pour détecter les objets GDI qui fuient à partir du débogueur VC++? Pour que l'on n'ait pas besoin d'une sépara Les fuites de l'outil et du GDI peuvent être détectées lors d'un débogage normal et ne doivent pas être vérifiées séparément.

+1

si je pouvais +2 cette question je le ferais. En plus d'être une bonne question, vous fournissez des tonnes de bonnes infos. – tenfour

Répondre

6

Les objets GDI n'ont pas à être vérifiés individuellement (pas vraiment), ils peuvent être en charge avec Deleaker - et vous saurez où la fuite. Lisez attentivement les instructions et regardez une vidéo de démonstration: http: //deleaker.com/

+0

Pourquoi diriez-vous que "ils ne doivent pas être vérifiés individuellement"? Si une application ne libère pas correctement les objets GDI, je voudrais bien sûr savoir quel code fuit ...? !! –

+1

Grand débogueur je l'utilise aussi)) –

+0

+5 approuver .... fonctionnent bien, coûtent pas cher. – MastAvalons

3

Intel Parallel Inspector est un vérificateur de fuite de mémoire qui est intégré dans Visual Studio et peut détecter les fuites GDI. Visual Studio ne possède pas de profileur de mémoire intégré pour les applications non gérées.

+0

Hmmm ... cela étend-il le débogueur de studio visuel existant, ou est-ce un outil séparé qui "s'intègre" simplement avec Visual Studio? (comme AQTime) –

+0

Un vérificateur de fuite de mémoire et un débogueur sont deux choses différentes ... et oui, il s'intègre "simplement" à Visual Studio. – ronag

0

Cela est confirmé.

+0

La question concerne les ressources GDI, pas la mémoire. (Et VC++ a des outils intégrés pour le suivi des fuites de mémoire dans le code _native_.) –