Accueil > Debug , Silverlight > Silverlight débogage avec WinDbg et SOS

Silverlight débogage avec WinDbg et SOS

Introduction

Dans le post précédent Silverlight débogage avec Visual Studio , j'ai démontré que Visual Studio est un puissant et l'outil le plus pratique pour le débogage des applications gérées. Mais pour certains scénarios de débogage avancées, comme une fuite de mémoire, blocage, le processus de fuite / thread, le débogage du noyau, et avancé à distance / crash / interface de débogage, etc, WinDbg (ou cdb, NTSD, kd) est généralement préférable, si elle n'est pas la seule option.

Debugging Tools for Windows

Vue d'ensemble

WinDbg fait partie de l' outils de débogage pour Windows package:

image_thumb5

Même si WinDbg est un programme graphique, il est principalement utilisé comme un débogueur en ligne de commande comme (et souvent avec) KD, CDB et NTSD, et de partager le même moteur de débogage et de commandes. Il est super puissant et extensible, particulièrement bien adapté pour le système / le débogage de bas niveau comme les conducteurs et autres composants du système d'exploitation. Il exige une bonne connaissance du matériel, système d'exploitation, compilateur et à tirer le meilleur parti de la boîte à outils. C'est un grand (ou parfait, devrais-je dire :-) pour le débogage natif, avec ses commandes vaste et extensible et une interface utilisateur graphique. Géré en charge le débogage se fait par SOS debug extension, n'est pas aussi bon que le débogage natif, mais il ya une valeur énorme à être en mesure de faire le débogage intégrés dans des limites géré et autochtones, et pour Silverlight, il est le seul outil que je suis au courant de qui peut charger SOS et effectuer un débogage intégré.

Commandes

WinDbg / CDB / NTSD / kd ont été autour pendant longtemps, de sorte qu'ils sont très bien documentés. Il est fortement recommandé de lire à propos des outils de débogage pour Windows sur microsoft.com et MSDN . Ici je ne donne un bref aperçu de ses commandes, pour vous donner une idée et de référence rapide. Toutes les commandes viennent avec l'aide de l'exécution (via? |. Aide | Aidez <cmd> [] comme nous le verrons ci-dessous), alors une vue d'ensemble est généralement suffisant pour obtenir votre commencé.

WinDbg a trois types de commandes:

Commandes standard

Principalement:

  • B * des commandes pour configurer / clair / list / activer / désactiver les points d'arrêt sur l'adresse ou l'accès
  • D * commandes d'examiner la mémoire (pile / tas, local / variables globales et les paramètres), commande * E pour modifier la mémoire, et S * à la recherche de la mémoire
  • K * Les commandes d'examiner la pile des appels
  • P, T, G * commandes pour le contrôle de l'exécution

ci-dessous? sortie de la commande est un bon aperçu et référence fréquente pour les personnes utilisant WinDbg / CDB / NTSD / kd:

0:006>?

Debugger.chm Open pour la documentation complète débogueur

B [C | D | E] [<bps>] - clair / désactiver / activer point d'arrêt (s)
- La liste des points d'arrêt BL
BA <Access> <size> <addr> - point d'arrêt ensemble de processeurs
BP <adresse> - set point d'arrêt doux
D [type] [<plage>] - vidage de la mémoire
DT [-n | Y] [[mod! Nom]] [-n | [y] champs]
[Adresse]-l [list] [-a] | [c | i | o [r | #] | v - dump à l'aide des informations de type]
DV [<nom>] - dump des variables locales
E [type] <adresse> [<values>] - saisir les valeurs de la mémoire
G H N | [[] = <adresse> [<adresse> ...]] - aller
K <count> - stacktrace
KP <count> - stacktrace avec des arguments source
LM [k | l | u | v] - liste des modules
LN <expr> - Liste des symboles le plus proche
[P = <addr>] [<valeur>] - enjamber
Q - Quitter
[[<reg> [= <expr>]]] - Afficher ou définir les registres R
S [<opts>] <plage> <values> - mémoire de recherche
SX [(e | d | i | n) [-c "cmd1"] [-c2 "cmd2" [-h]] (Exception | Evénement | *)] - filtre d'événement
[T = <adresse>] [<expr>] - Trace dans
U [<plage>] - unassemble
version - débogué spectacle et version de débogage
[<* | Module >!]<*| -> Voir le symbole des symboles X
? <expr> - expression d'affichage
?? <expr> - affichage C + + expression
<$ <nomfichier> - Recevoir en entrée un fichier de commandes

Appuyez sur Entrée ...

<expr> ops unaires: + - non par wo dwo qwo poi Salut à faible
ops binaires: + - * / mod (%) et (&) XOR (^) ou (|)
comparaisons: == (=)> <! =
opérandes: nombre en base actuelle, symbole public, <reg>
<type>: b (octet), w (word), d [s] ([Dword avec des symboles]),
une ASCII (), c (DWORD et Char), u (Unicode), L (liste)
f (float), D (double), s | S (chaîne ASCII / Unicode)
q (quadword)
<motif>: [(nt | <dll-name>)!] <var-name> (<var-name> peut comprendre? et *)
<plage>: <adresse> <adresse>
: L <count> <adresse>

Options en mode utilisateur:
~ - Fils liste d'état
~ # S - mis fil par défaut
| - Liste des processus du statut
| # S - ensemble de processus par défaut

x86 options:
DG <selector> - dump sélecteur
<reg>: [e ax], [e] bx, [e] cx, [e] dx, [e] si, [e] di [e] pb, [e] sp, [e] la propriété intellectuelle, [ e] fl,
al, ah, BL, BH, CL, CH, DL, DH, CS, DS, ES, FS, GS, art
DR0, DR1, DR2, DR3, DR6, DR7
fpcw, fpsw, fptw, st0-ST7, mm0-MM7
XMM0-XMM7
<flag>: iopl, de, df, si, TF, SF, ZF, AF, PF, CF
<addr>: # <-bit mode de protection [seg-16:> adresse],
[seg:]address> <V86-mode &

Debugger.chm Open pour la documentation complète débogueur

Meta commandes

Ces commencer par un point, principalement pour le débogage avancées. Certaines commandes que vous devez savoir:

  • . Symfix et. SYMPATH pour l'utilisation du symbole serveur
  • . Srcfix et. Srcpath pour l'utilisation de serveur source
  • . Charge. Loadby. Décharger. Chaîne. Setdll pour la gestion des extensions de débogage
  • . Serveur. Distant pour le débogage distant

Il vaut la peine de votre temps pour me familiariser avec le serveur de symbole, serveur source et le débogage à distance: ils vous rendront la vie beaucoup plus facile. est inférieure à la sortie de. Aide en ligne:

0:006>. Aide
. commandes:
. Abandon - abandon du processus en cours
. Allow_exec_cmds [0 | 1] - commandes de contrôle d'exécution
. Allow_image_mapping [0 | 1] - le contrôle à la demande de cartographie par image fichier sur
. Apply_dbp [<options>] - ajouter l'état actuel des données à un point d'arrêt
Inscrivez-cadre
. Asm [<options>] - set de démontage options
. Asm-[<options>] - options claires démontage
. Joindre <proc> - joindre à <proc> à la prochaine exécution
. Bloc () <commandes> - entre un ensemble de commandes pour l'exécution imbriqués
. [Bpsync 0 | 1] - le comportement point d'arrêt spéciale pour debuggees multithread
. Break - sortir de la boucle entourant
. Breakin - percer KD
. Cache [<options>] - virtuelle de contrôle de la mémoire cache
. <Fn> Appel (<arg1>, <arg2>, ...) - exécuter une fonction dans le programme débogué
. Catch () <commandes> - capture des échecs dans les commandes
chaîne - la liste actuelle des extensions.
. Childdbg <0 | 1> - processus enfant tourner le débogage sur ou hors
. Clients - Liste des clients actifs actuellement
. CloseHandle [<options>] [<handle>] - fermer la poignée de donnée
. Continuer - continuer la boucle entourant
. Copysym [<options>] <chemin> - copie des fichiers de symboles actuels vers un répertoire
. Créer ligne> <command - créer un nouveau processus
. Createdir [<options>] [<chemin>] - options de création de processus de contrôle
. CXR <adresse> - enregistrement de contexte de vidage à l'adresse spécifiée
k * après ce qui donne CXR pile
. Dbgdbg - attacher un débogueur au débogueur actuelle
. [Debug_sw_wow 0 | 1] - permettent une interaction avec un logiciel d'émulation WOW
. Détacher - détacher du processus en cours / dump
. <file> Dml_file - sortie le contenu du dossier LMD
. Dml_flow <start> <addr> - Voir la base des flux bloc de code
dml_start <options> [- navigables aperçu des] activités débogueur.
. Do () <commandes> (<cond>) - exécuter <commandes> jusqu'à <cond> est égal à zéro
. Conducteurs - Cette commande a été retirée - utilisation »LM» ou. Reload-L)
. Dump [<options>] <nomfichier> - créer un fichier de vidage sur le système hôte
. Dvalloc [<options>] <bytes> - mémoire VirtualAlloc dans le programme débogué
. Dvfree [<options>] <offset> <bytes> - VirtualFree mémoire dans le programme débogué
. ECHO ["<chaîne>" | <string>] - affiche string
. Echotime - le temps de sortie du débogueur
. Echotimestamps [0 | 1] - Sortie timestamp bascule sur les événements
. Ecxr - enregistrement de contexte de vidage pour exception en cours
. Effmach [<machine>] - changer le type de machine en cours
.) Else (<commandes> - if / then / sursis d'exécution d'autre
. Elsif (<cond>) () <commandes> [<else clauses>] - if / then / else conditionnelle
exécution
. Enable_long_status [0 | 1] - dump types LONG à défaut de base
. [Enable_unicode 0 | 1] - dump tableau USHORT / pointeurs et les chaînes Unicode
. Endsrv <id> - désactiver le serveur du moteur de donnée
. Endpsrv - cause session à distance du serveur actuel pour sortir de la
. Enumtag - énumérer les données disponibles tags
. Event_code - affichage des instructions en cache événement
. Affichage du journal - journal des événements des derniers événements
. Événements - Affichage et sélectionnez les événements disponibles
. Eventstr - afficher toutes les chaînes d'événements enregistrés par le programme débogué
. ExePath [<dir> [;...]] - définir le chemin de recherche exécutable
. ExePath + [<dir> [;...]] - append chemin de recherche exécutable
. Expr - évaluateur d'expression de contrôle
. <adresse> Exptr - faire. EXR et. CXR pour EXCEPTION_POINTERS
. EXR <adresse> - enregistrement d'exception décharge à l'adresse spécifiée
. Extmatch [<opts>] <motif> - afficher toutes les extensions de filtrage
. Extpath <opts> [<dir> [;...]] - recherche de chemin de rallonge
. Extpath + <opts> [<dir> [;...]] - append chemin de recherche de vulgarisation
. F + - ensemble actuel cadre de pile à l'appelant de la trame courante
. F-- ensemble actuel cadre de pile à l'appelé de la trame courante
<adresse> fibres. - contexte des ensembles de fibres à l'adresse
contexte réinitialise si aucune adresse indiquée
. Fiximports <motif> - les tentatives de lier les importations d'images
. <adresse> Fnent - entrée de la fonction de décharge pour l'adresse de code donné
. Fnret <fnaddr> [<retval>] - affichage de la valeur de retour en forme
. Pour (<init>; <cond>; <step>) () <commandes> - exécuter et <commandes>
<step> jusqu'à <cond> est
zéro
. [Force_radix_output 0 | 1] - types entiers décharge de base par défaut
. Force_system_init [<options>] - systèmes vigueur en attendant d'initialiser si possible
. Force_tb - force de permettre le traçage branche
. Foreach opte [] (<alias> (<tcmds>)) () <ecmds> - exécuter <ecmds> pour
Chaque jeton dans la
sortie de <tcmds>
. <options> Polynésie française - Polynésie française d'information substituer le contrôle
. Châssis [<frame>] - mis en pile cadre actuel pour les habitants
. <expr> Formats - résultat de l'expression affiche dans de nombreux formats
. Aide [<options>] - afficher l'aide
<options> plage [hold -] et de comparer les données en mémoire holdmem.
. If (<cond>) () <commandes> [<else clauses>] - if / then / else conditionnelle
exécution
. Ignore_missing_pages [0 | 1] - Résumé du noyau de contrôle de vidage disparus
message d'erreur page
. <options> Imgscan - scan de la mémoire pour les images PE
. <jdi_addr> Jdinfo - interpréter des informations AeDebug
. <count> Kframes - par défaut trace de la pile de profondeur
. Tuer - tuer le processus en cours
. Lastevent - affichage de la dernière épreuve qui a eu lieu
. Congé - quitter le joint. Captures
. Lignes - bascule de chargement symbole de ligne
. <name> Charge - ajouter cette extension DLL à la chaîne d'extension
. Loadby <name> <mod> - Ajouter la DLL d'extension dans le module
répertoire à la chaîne d'extension
. Locale [<locale>] - définir les paramètres régionaux en cours
. Logfile - Statut journal d'affichage
. Logopen [<file>] - Ouvrir le fichier log de nouvelles
. Logappend [<file>] - Ajouter au fichier journal
. Logclose - fichier journal proche
. Netsyms [0 | 1] - autoriser / interdire les chemins symbole net
. Netuse [<options>] - gérer les connexions à l'Internet
. Noshell - désactiver des commandes shell
. Noversion - version extension désactiver la vérification
. - <motif> Filtre de sortie débogué ofilter contre le modèle donné
. <prefix> Ocommand - traiter la production avec le préfixe donné comme une commande
. <file> Opendump - ouverture d'un fichier de vidage
. Outmask <masque> - bits fixés dans le masque courant de sortie
. Outmask-<masque> - bits clairement dans le masque courant de sortie
. Pcmd [<options>] - contrôle-commande rapide par
. Pop [<options>] - pop État
. [Prefer_dml 0 | 1] - le contrôle du mode par défaut DML
. Printf "<format>", <args…> - sortie mise en forme
. Processus [<adresse>] - ensembles processus implicite
défaut réinitialise si aucune adresse indiquée
. [Prompt_allow] <options> - contrôler ce que les informations peuvent être affichées
à l'invite
. Push [] <options> - État push
. Quit_lock [<options>] - session se bloque contre une fermeture inattendue
. Readmem <file> <plage> - lire la mémoire premières partir d'un fichier
. Record_branches [0 | 1] - enregistrement des contrôles de processeur de branchement
. Reload [<image.ext> [= <adresse>, <size>]] - symboles de recharge
. Redémarrer - demande une session de redémarrer
. <pipename> À distance - serveur remote.exe démarrage
. [Sécurisé 0 | 1] - interdire les opérations dangereuses pour l'accueil
. <options> Send_file - envoyer des fichiers vers un serveur distant
. - <options> Démarrage du serveur moteur de serveur
. Serveurs - liste d'accès distant des serveurs Active
. <name> Setdll - débogueur de recherche pour les extensions de ce premier DLL
. Shell [<command>] - exécuter la commande shell
. [<opts>] - Contrôle show_read_failures supplémentaires de sortie non lus
. [<opts>] - Contrôle de la production supplémentaire show_sym_failures échec symbole
. <milliseconds> Sommeil - débogueur dort pour une durée donnée
utile pour permettre l'accès à une machine qui
brisé sur une NTSD-D
. Srcfix [<chemin extra>] - source chemin de recherche fixe
. Srcfix [+ <chemin extra>] - append fixe chemin de recherche de source
. [Srcnoisy 0 | 1] - verbose contrôle chargement à la source de sortie
. Srcpath [[;...]] <dir> - recherche de chemin de sources indiquées
. Srcpath + [<dir> [;...]] - append chemin de recherche de source
. Step_filter [<opts>] ["<motif> [; ...]"] - Set modèles symbole <motif>
pour sauter quand l'intensification
. Symfix [<localsym>] - Correction de chemin de recherche de symbole
. Symfix + [<localsym>] - append fixe chemin de recherche de symbole
. <flags> Symopt - options jeu de symboles
. Symopt <flags> + - options jeu de symboles
.-<flags> - Options claires symbole symopt
. SYMPATH [[;...]] <dir> - recherche de chemin jeu de symboles
. SYMPATH + [<dir> [;...]] - append chemin de recherche de symbole
. Thread [<adresse>] - cadre fixe de fil à l'adresse
contexte par défaut réinitialise si aucune adresse indiquée
. Temps - le temps de session affiche des informations
. THeure - temps thread affiche des informations
. Tlist - Liste des processus en cours
. - <flags> Ensemble typeopt / options Clear Type
. Décharger <name> - supprimer cette DLL d'extension de la liste des DLL d'extension
. Unloadall - supprimer toutes les DLL d'extension de la liste des extensions DLL
. Suite - se réveillent un débogueur sleep'ing.
. While (<cond>) () <commandes> - exécuter <commandes> tout <cond> est non-nul
. Writemem <file> <plage> - mémoire vive premières dans un fichier

". Hh <command> utilisation» ou Debugger.chm ouverte dans le répertoire débogueurs pour obtenir
une documentation détaillée sur une commande.

Extension des commandes

Ces commencer!, Généralement pour un domaine particulier, comme les commandes extension SOS pour le débogage géré. Vous pouvez utiliser! <ext>. Aide à la liste des commandes d'une extension, comme! Exts.help. Pour le débogage système avancé, comme la détection des fuites de mémoire, etc impasse, vous devez être très familier avec ces commandes extension.

SOS

Vue d'ensemble

SOS est l'acronyme de Fils de Strike (ne me demandez pas pourquoi), une extension de débogage pour le débogage géré. Je crois qu'il a été inventé par l'équipe CLR pour le débogage CLR, il a été autour depuis longtemps, et il ya beaucoup de bonnes informations sur le web. Quelques lectures recommandées:

Chaque version du CLR a ses propres SOS (. NET Framework 3.5 utilise encore CLR 2.0, Silverlight et a ses propres CLR):

Répertoire de C: \ Program Files \ Debugging Tools for Windows \ clr10
19/09/2007 19:01 948.784 sos.dll
1 fichier (s) 948 784 octets

Répertoire de C: \ Program Files \ Microsoft Silverlight \ 2.0.31005.0
05/10/2008 02:16 495.424 sos.dll
1 fichier (s) 495 424 octets

Répertoire de C: \ Windows \ Microsoft.NET \ Framework \ v1.1.4322
15/07/2004 00:35 319.488 SOS.dll
1 fichier (s) 319 488 octets

Répertoire de C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727
27/07/2008 10:03 392.184 SOS.dll
1 fichier (s) 392 184 octets


Commandes

SOS Aide exécuter le temps est si grand que vous n'avez pas besoin de presque toute autre doc autre que d'essayer quelques erreurs et une certaine frustration :-)

0:016>! Aide
---------------------------
SOS est une DLL d'extension débogueur conçu pour faciliter le débogage de la gestion
programmes. Les fonctions sont classées par catégorie, puis à peu près dans l'ordre de
importance. des noms raccourcis pour les fonctions populaires sont énumérés entre parenthèses.
"Type! Aide <functionname>" pour plus de détails sur cette fonction.

Objet d 'inspection de l'examen du code et des piles
---------- ----------
DumpObj (ne) Threads
DumpArray (da) CLRStack
DumpStackObjects (DSO) IP2MD
DumpHeap U
DumpVC dumpStackQ
GCRoot EEStack
ObjSize GCInfo
FinalizeQueue EHInfo
PrintException (PE) COMState
TraverseHeap AMTA

CLR structures de données de l'examen des utilitaires de diagnostic
---------- ----------
DumpDomain VerifyHeap
EEHeap VerifyObj
Name2EE FindRoots
SyncBlk HeapStat
DumpMT GCWhere
DumpClass ListNearObj (LNO)
DumpMD GCHandles
Token2EE GCHandleLeaks
FinalizeQueue EEVersion (FQ)
DumpModule FindAppDomain
ThreadPool SaveModule
DumpAssembly ProcInfo
StopOnException DumpSigElem (SOE)
DumpRuntimeTypes DumpLog
DumpSig VMMap
RCWCleanupList vmstat
DumpIL MinidumpMode
AnalyzeOOM (AO)

L'examen de la GC histoire Autres
---------- ----------
HistInit FAQ
HistStats
HistRoot
HistObj
HistObjFind
HistClear

Exemple de débogage de démonstration

Je vais utiliser l'application Silverlight simple même dans le précédent post ( Silverlight débogage avec Visual Studio ) pour démontrer le débogage WinDbg avec SOS:

image_thumb

Voici le journal de débogage avec mes annotations (en commençant par / /):

/ / Mise en place chemin de symbole pour l'utilisation de symboles serveur
0:013>. SYMPATH
chemin de recherche est Symbole: <empty>
0:013>. Symfix C: \ Users \ ningz \ AppData \ Local \ Temp \ Symbols
0:013>. SYMPATH
chemin de recherche est Symbole: SRV * C: \ Users \ ningz \ AppData \ Local \ Temp \ Symbols \ * \ Symbols \ symboles

/ / Ajouter le chemin APB pour l'application en cours de débogage
0:013>. SYMPATH + "C: \ Users \ ningz \ Documents \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ SilverlightApplication1 \ Bin \ Debug"
chemin de recherche est Symbole: SRV * C: \ Users \ ningz \ AppData \ Local \ Temp \ Symbols *
http://msdl.microsoft.com/download/symbols;
C: \ Users \ ningz \ Documents \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ SilverlightApplication1 \ Bin \ Debug

/ / Recharger tous les symboles
0:013>. Reload
Le rechargement des modules en cours
.................................................. .................................................. ..............

/ / Mise en place chemin source à utiliser une source serveur
0:013>. Srcpath
chemin de recherche à la source est: <empty>
0:013>. Srcfix
chemin de recherche à la source est: SRV *
0:013>. Srcpath + "C: \ Users \ ningz \ Documents \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ SilverlightApplication1"
chemin de recherche à la source est: SRV * C: \ Users \ ningz \ Documents \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ SilverlightApplication1

/ SOS / charge. S'il vous plaît noter:
/ / 1. il semble mscorwks est remplacé par CoreCLR dans Silverlight
/ / 2. au lieu de. loadby, vous pouvez également utiliser. load "C: \ Program Files \ Microsoft Silverlight \ \ sos.dll 2.0.31005.0"
0:013>. SOS loadby CoreCLR
Chargé C: \ Program Files \ Microsoft Silverlight \ 2.0.31005.0 \ sos extension DLL

/ / Définit un point d'arrêt pour le gestionnaire d'événement, cliquez le bouton
0:013>! AMTA SilverlightApplication1 SilverlightApplication1.Page.Button_Click
Trouver des méthodes 1 ...
MethodDesc = 03983a30
Ajout de points d'arrêt en attendant ...
0:013 bl>
0 e 0428215b 0001 (0001) 0 :****
0:013> g
MODLOAD: 70800000 7080c000 C: Windowssystem32dwmapi.dll

/ / Et cliquez sur le bouton pause dans WinDbg
Breakpoint 0 Hit
*** ATTENTION: Impossible de vérifier de contrôle pour SilverlightApplication1.dll
SilverlightApplication1! Button_Click:
04850398 55 push ebp
Intégré de gestion de débogage ne supporte pas de recensement des variables locales.
Voir http://dbg/managed.htm pour plus de détails.
Traitement des cadres géré n'a pas pu, HRESULT 0x80004005

/ / Comparer! Fils et de sortie * ~
0:005>! Threads / / liste gérée fils seulement
Fils au pouce: 3
UnstartedThread: 0
BackgroundThread: 3
PendingThread: 0
DeadThread: 0
Durée Hébergé: oui
PreEmptive Alloc Lock GC
ID OSID ThreadOBJ État Contexte comte de domaine GC Exception APT
5 1 1b08 043576e0 220 04f9f214 handicapés: 04f9ffe8 06f529d8 0 STA
9 2 928 043689c8 B220 Enabled 00000000:00000000 0433c738 0 MTA (Finalizer)
10 3 1e8c 06f509d0 1220 Enabled 00000000:00000000 0433c738 0 UKN
0:005> ~ * / / liste de toutes les discussions
0 ID: 162c.1a28 suspension: 1 Teb: 7ffde000 dégelé
Début: iexplore! WWinMainCRTStartup (00a52d79)
Priorité: niveau de priorité 0: 32 Affinity: 3
2 ID: 162c.1020 suspension: 1 Teb: 7ffdc000 dégelé
Début: OLE32! CRpcThreadCache:: RpcWorkerThreadEntry (76dfe0cc)
Priorité: niveau de priorité 0: 32 Affinity: 3
3 Id.: 162c.1e00 suspension: 1 Teb: 7ffda000 dégelé
Début: ntdll! TppWaiterpThread (778ab61b)
Priorité: niveau de priorité 0: 32 Affinity: 3
4 ID: 162c.1f00 suspension: 1 Teb: 7ffd9000 dégelé
Début: msvcrt! _endthreadex 0 x6f (76162da8)
Priorité: niveau de priorité 0: 32 Affinity: 3
5. Id: 162c.1b08 suspension: 1 Teb: 7ffd8000 dégelé
Début: IEFRAME! CTabWindow:: _TabWindowThreadProc (6c163fdb)
Priorité: niveau de priorité 0: 32 Affinity: 3
7 Id: Suspension 162c.170: 1 Teb: 7ffd6000 dégelé
Début: npctrl! CXcpDispatcher:: DispatcherTimerCallback (6a6d16f4)
Priorité: niveau de priorité 0: 32 Affinity: 3
8 Id: 162c.1cd0 suspension: 1 Teb: 7ffd5000 dégelé
Début: CoreCLR! DebuggerRCThread:: ThreadProcStatic (640eb5cd)
Priorité: niveau de priorité 0: 32 Affinity: 3
9 Id.: 162c.928 suspension: 1 Teb: 7ffd4000 dégelé
Début: CoreCLR! Thread:: intermediateThreadProc (63fb8e4f)
Priorité: niveau de priorité 0: 32 Affinity: 3
10 Id.: Suspension 162c.1e8c: 1 Teb: 7ffd3000 dégelé
Début: CoreCLR! Thread:: intermediateThreadProc (63fb8e4f)
Priorité: niveau de priorité 0: 32 Affinity: 3
11 ID: Suspension 162c.1fac: 1 Teb: 7ffaf000 dégelé
Début: agcore! CMulticoreTaskScheduler:: WorkerThread (660547de)
Priorité: niveau de priorité 0: 32 Affinity: 3
12 ID: 162c.1b78 suspension: 1 Teb: 7ffae000 dégelé
Début: agcore! CMulticoreTaskScheduler:: WorkerThread (660547de)
Priorité: niveau de priorité 0: 32 Affinity: 3
13 Id: 162c.1d18 suspension: 1 Teb: 7ffdb000 dégelé
Début: ntdll! RtlUserThreadStart (778c9a78)
Priorité: niveau de priorité 0: 32 Affinity: 3
Traitement des cadres géré n'a pas pu, HRESULT 0x80004005
Intégré de gestion de débogage ne supporte pas de recensement des variables locales.
Voir http://dbg/managed.htm pour plus de détails.

/ / Comparer! & K sortie clrstack
0:005>! Clrstack-p / / liste gérée trames de pile seulement
Id Thread OS: 0x1b08 (5)
ESP EIP
0450f850 04800398 SilverlightApplication1.Page.Button_Click (System.Object, System.Windows.RoutedEventArgs)
PARAMETRES:
ce (<CLR reg>) 0x04f59c78 =
expéditeur (<CLR reg>) = 0x04f5b948
e (0x0450f854) = 0x04f9f1f0

0450f858 System.Windows.Controls.Primitives.ButtonBase.OnClick 048cde0d ()
PARAMETRES:
ce (0x0450f864) = 0x04f5b948

0450f870 048cdd10 System.Windows.Controls.Button.OnClick ()
PARAMETRES:
ce = <pas Data>

0450f880 System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp 048cdc3d (System.Windows.Input.MouseButtonEventArgs)
PARAMETRES:
ce (0x0450f884) = 0x04f5b948
e (0x0450f880) = 0x04f9f188

0450f890 048cdba1 System.Windows.Controls.Control.OnMouseLeftButtonUp (System.Windows.Controls.Control, System.EventArgs)
PARAMETRES:
ctrl = <pas Data>
e = <pas Data>

0450f8a0 0483a0e7 MS.Internal.JoltHelper.FireEvent (IntPtr, IntPtr, Int32, System.String)
PARAMETRES:
unmanagedObj (0x0450f8f8) = 0x04355c48
unmanagedObjArgs (0x0450f8f4) = 0x0707be00
argsTypeIndex (0x0450f928) = 0x000000a9
eventName (0x0450f924) = 0x04f9f16c

0450fa74 63ef17b0 [GCFrame: 0450fa74]
0450fb30 63ef17b0 [ContextTransitionFrame: 0450fb30]
0450fc28 63ef17b0 [UMThkCallFrame: 0450fc28]
0:005> kp / / liste de toutes les trames de pile
ChildEBP RetAddr
0450f868 048cde0d SilverlightApplication1! Button_Click (<HRESULT 0x80004001>)
0450f868 048cdd10 System_Windows! System.Windows.Controls.Primitives.ButtonBase.OnClick (<HRESULT 0x80004001>) +0 X5D
0450f878 System_Windows 048cdc3d! System.Windows.Controls.Button.OnClick (<HRESULT 0x80004001>) +0 x48
0450f888 048cdba1 System_Windows! System.Windows.Controls.Primitives.ButtonBase.OnMouseLeftButtonUp (<HRESULT 0x80004001>) +0 x85
0450f898 0483a0e7 System_Windows! System.Windows.Controls.Control.OnMouseLeftButtonUp (<HRESULT 0x80004001>) +0 x41
0450f91c 63ef17b0 System_Windows! MS.Internal.JoltHelper.FireEvent (<HRESULT 0x80004001>) +0 x1b7
0450f934 63ef5f98 CoreCLR! CallDescrWorker 0 x33
0450f9b0 CoreCLR 63f032bc! CallDescrWorkerWithHandler 0 x8e
0450f9d0 CoreCLR 63f0345c! ForwardCallToManagedMethod 0 x55
0450faf4 CoreCLR 63fc4abf! DoUMThunkCallWorker 0 x199
0450fbe0 04c513d2 CoreCLR! DoUMThunkCall 0 x1b4
AVERTISSEMENT: Frame IP n'étant pas dans n'importe quel module connue. À la suite de cadres peut-être tort.
0450fc10 6607e0db 0x4c513d2
0450fc70 agcore 6a6dc1fc! CCoreServices:: 0 CLR_FireEvent x183
Traitement des cadres géré n'a pas pu, HRESULT 0x80004005
0450fc84 6a6dc187 npctrl! CommonBrowserHost:: +0 x2A CLR_FireEvent
0450fcc8 6a6dc048 npctrl! CControlBase:: 0 ScriptCallback x366
0450fd08 6a6dc013 npctrl! CXcpDispatcher:: +0 Xee OnScriptCallback
0450fd14 npctrl 6a6dbfef! CXcpDispatcher:: +0 x3a OnWindowMessage
0450fd2c 7731f8d2 npctrl! CXcpDispatcher:: +0 x7f WindowProc
0450fd58 7731f794 USER32! InternalCallWinProc +0 x23
0450fdd0 77320008 USER32! UserCallWinProcCheckWow 0 x14b

/ / Examine tas, note la commodité de l'objet tas tapé fort,
/ / Au lieu de-octets tapé ONU en natif tas
0:005>! Dumpheap type SilverlightApplication1
Taille MT Adresse
04f4f31c 046336b0 36
04f59c78 04633a6c 68
Total 2 objets
Statistiques:
MT comte TotalSize Nom de la classe
046336b0 1 36 SilverlightApplication1.App
04633a6c 1 68 SilverlightApplication1.Page
Total 2 objets
0:005>! Ne 04f59c78
Nom: SilverlightApplication1.Page
MethodTable: 04633a6c
EEClass: 0463196c
Taille: 68 (0x44) octets
Dossier: SilverlightApplication1, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null
Domaines:
Champ MT Offset Valeur Nom Attr VT
047d97a0 40000dc 4 ... al.NativeResource 0 par exemple 04f5a5c0 m_nativePtr
04853ab8 40000df 8 ... System.Windows]] 0 par exemple 00000000 _valueTable
047d9874 40000e0 c ... reTypeEventHelper 0 par exemple 04f5a600 _coreTypeEventHelper
04856388 40000e3 10 ... BJET,] mscorlib] 0 par exemple 04f79a58 _treeChildren
047ae03c 40000e4 14 ... rnal.IManagedPeer 0 par exemple 00000000 _treeParent
03d50a90 40000dd 2B0 System.IntPtr 1 partagé statique StaticNativePointer
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 00000000 <<
03d50f28 40000de 2B4 System.Boolean 1 partagé _isCoreCreate statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 0 <<
047ae384 40000e1 8 .... DependencyObject 0 partagée PropertyReferencesHolder statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f489b8 <<
04661618 40000e2 c ... flection.Assembly 0 statique partagée _executingAssembly
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 00000000 <<
047d0b90 40000f1 18 ... rs.AutomationPeer 0 par exemple 00000000 m_pAP
047d7404 40000e8 10 ... ependencyProperty 0 partagée OpacityProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a4a8 <<
047d7404 40000e9 14 ... ependencyProperty 0 partagée ClipProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a4d0 <<
047d7404 40000ea 18 ... ependencyProperty 0 partagée RenderTransformProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a4f8 <<
047d7404 40000eb 1c ... ependencyProperty 0 statique partagée OpacityMaskProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a50c <<
047d7404 40000ec 20 ... ependencyProperty 0 partagée RenderTransformOriginProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a534 <<
047d7404 40000ed 24 ... ependencyProperty 0 partagée IsHitTestVisibleProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a548 <<
047d7404 40000ee 28 ... ependencyProperty 0 partagée VisibilityProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a570 <<
047d7404 40000ef 2c ... ependencyProperty 0 statique partagée RenderSizeProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a598 <<
047d7404 40000f0 30 ... ependencyProperty 0 partagée UseLayoutRoundingProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a5ac <<
00000000 4000108 1c 0 par exemple 00000000 BindingValidationError
04856ae4 400010a 20 ... angedEventHandler 0 par exemple 00000000 DPChanged
048bc8a4 400010b 24 ... angedEventHandler 0 par exemple 00000000 DataContextChanged
03d50f28 400010c 2c System.Boolean une instance 0 _isDataContextBound
0481f43c 400010d 28 ... angedEventHandler 0 par exemple 00000000 _sizeChanged
047d7404 40000f2 34 ... ependencyProperty 0 partagée TriggersProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a144 <<
047d7404 40000f3 38 ... ependencyProperty 0 partagée ResourcesProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a158 <<
047d7404 40000f4 3c ... ependencyProperty 0 statique partagée LanguageProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a180 <<
047d7404 40000f5 40 ... ependencyProperty 0 partagée ActualWidthProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a194 <<
047d7404 40000f6 44 ... ependencyProperty 0 partagée ActualHeightProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a1a8 <<
047d7404 40000f7 48 ... ependencyProperty 0 partagée WidthProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a1bc <<
047d7404 40000f8 4c ... ependencyProperty 0 statique partagée HeightProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a1d0 <<
047d7404 40000f9 50 ... ependencyProperty 0 partagée MinWidthProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a1e4 <<
047d7404 40000fa 54 ... ependencyProperty 0 partagée MaxWidthProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a1f8 <<
047d7404 40000fb 58 ... ependencyProperty 0 partagée MinHeightProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a20c <<
047d7404 40000fc 5c ... ependencyProperty 0 statique partagée MaxHeightProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a220 <<
047d7404 40000fd 60 ... ependencyProperty 0 partagée HorizontalAlignmentProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a234 <<
047d7404 40000fe 64 ... ependencyProperty 0 partagée VerticalAlignmentProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a248 <<
047d7404 40000ff 68 ... ependencyProperty 0 partagée MarginProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a25c <<
047d7404 4000100 6c ... ependencyProperty 0 statique partagée StyleProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a284 <<
047d7404 4000101 70 ... ependencyProperty 0 partagée ParentProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a2ac <<
047d7404 4000102 74 ... ependencyProperty 0 partagée NameProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a2c0 <<
047d7404 4000103 78 ... ependencyProperty 0 partagée TagProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a2d4 <<
047d7404 4000104 7c ... ependencyProperty 0 statique partagée TagInternalProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a2fc <<
04851464 4000105 80 ... ndows.RoutedEvent 0 partagée LoadedEvent statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a420 <<
047d7404 4000106 84 ... ependencyProperty 0 partagée CursorProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a440 <<
047d7404 4000107 88 ... ependencyProperty 0 partagée InstanceDelegateStoreProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a468 <<
047d7404 4000109 8c ... ependencyProperty 0 statique partagée DataContextProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a494 <<
047a1e2c 400010e 90 ... rence, mscorlib]] 0 partagée _staticDelegateList statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 00000000 <<
00000000 4000264 30 ... angedEventHandler 0 par exemple 00000000 IsEnabledChanged
047d7404 4000252 430 ... ependencyProperty 0 partagée IsTabStopProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59ce4 <<
047d7404 4000253 434 ... ependencyProperty 0 partagée TabIndexProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59cf8 <<
047d7404 4000254 438 ... ependencyProperty 0 partagée TemplateProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59d20 <<
047d7404 4000255 43C ... ependencyProperty 0 statique partagée TabNavigationProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59d48 <<
047d7404 4000256 440 ... ependencyProperty 0 partagée PaddingProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59d70 <<
047d7404 4000257 444 ... ependencyProperty 0 partagée HorizontalContentAlignmentProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59d98 <<
047d7404 4000258 448 ... ependencyProperty 0 partagée VerticalContentAlignmentProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59dc0 <<
047d7404 4000259 44c ... ependencyProperty 0 statique partagée BackgroundProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59de8 <<
047d7404 400025a 450 ... ependencyProperty 0 partagée BorderBrushProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59dfc <<
047d7404 400025b 454 ... ependencyProperty 0 partagée BorderThicknessProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59e10 <<
047d7404 400025c 458 ... ependencyProperty 0 partagée FontSizeProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59e24 <<
047d7404 400025d 45c ... ependencyProperty 0 statique partagée FontFamilyProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59e4c <<
047d7404 400025e 460 ... ependencyProperty 0 partagée ForegroundProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59e60 <<
047d7404 400025f 464 ... ependencyProperty 0 partagée FontWeightProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59e88 <<
047d7404 4000260 468 ... ependencyProperty 0 partagée FontStyleProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59eb0 <<
047d7404 4000261 46c ... ependencyProperty 0 statique partagée FontStretchProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59ed8 <<
047d7404 4000262 470 ... ependencyProperty 0 partagée DefaultStyleKeyProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59eec <<
047d7404 4000263 474 ... ependencyProperty 0 partagée IsEnabledProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59f00 <<
04857f14 4000265 478 ... System.Windows]] 0 partagée _resourceDictionaryCache statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5cae4 <<
03cf5668 4000266 47C System.Object [] 0 partagée _controlDelgates statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59f14 <<
047d7404 4000501 77C ... ependencyProperty 0 statique partagée ContentProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59cd0 <<
04852580 4000002 34 ... ows.Controls.Grid 0 par exemple 04f79770 LayoutRoot
04852a10 4000003 38 ... s.Controls.Button 0 par exemple 04f5b948 bouton
03d50f28 4000004 3c System.Boolean une instance 1 _contentLoaded

/ / Deux lignes ci-dessus est l'objet bouton de l'objet page
/ / Rappelez-vous son adresse 04f5b948, puisque nous allons nous référer à plus tard
/ / Nous pouvons obtenir la même adresse pour l'objet bouton de commande via dumpheap:
0:005>! Dumpheap-mt 04852a10
Taille MT Adresse
04f5b948 04852a10 92
Total 1 objets
Statistiques:
MT comte TotalSize Nom de la classe
04852a10 1 92 System.Windows.Controls.Button
Total 1 objets
0:005>! Gcwhere 04f5b948 / / bouton est en Gen0, puisqu'il n'y a pas encore GC
Adresse Gen Heap segment commencer alloués taille
04f5b948 0 0 04f40000 04f41000 04f9fff4 0x5c (92)
0:005>! Gcroot 04f5b948 / / voir qui est tenue de référence à l'objet bouton
Note: Roots trouve sur les cheminées peuvent être des faux positifs. Run "! Aide gcroot" pour
Plus d'infos.
/ Références cadastrales /
ECX: Racine: 04f59c78 (SilverlightApplication1.Page) ->
04f5b948 (System.Windows.Controls.Button) ->
EDX: Racine: 04f5b948 (System.Windows.Controls.Button) ->
/ / Pile références
Fil de balayage 5 OSTHread 1b08
ESP: 450f860: Racine: 04f5ca18 (System.Windows.RoutedEventHandler) ->
04f59c78 (SilverlightApplication1.Page) ->
04f5b948 (System.Windows.Controls.Button) ->
ESP: 450f864: Racine: 04f5b948 (System.Windows.Controls.Button) ->
ESP: 450f874: Racine: 04f5b948 (System.Windows.Controls.Button) ->
ESP: 450f884: Racine: 04f5b948 (System.Windows.Controls.Button) ->
ESP: 450f894: Racine: 04f5b948 (System.Windows.Controls.Button) ->
ESP: 450f8d4: Racine: 04f5b948 (System.Windows.Controls.Button) ->
ESP: 450f8e4: Racine: 04f5b948 (System.Windows.Controls.Button) ->
Thread Scan 9 OSTHread 928
Thread lire 10 OSTHread 1e8c
/ Références de domaine /
DOMAIN (06F529D8): poignée (Favoris): 46412f8: Racine: 05f44260 (System.Object [])->
04f45234 (System.Collections.Generic.List «1 [[System.Object, mscorlib ]])->
04f59980 (System.Object [])->
04f59c78 (SilverlightApplication1.Page) ->
04f5b948 (System.Windows.Controls.Button) ->
Traitement des cadres géré n'a pas pu, HRESULT 0x80004005
Intégré de gestion de débogage ne supporte pas de recensement des variables locales.
Voir http://dbg/managed.htm pour plus de détails.

/ / Examine le bouton objet lui-même
0:005>! Ne 04f5b948
Nom: System.Windows.Controls.Button
MethodTable: 04852a10
EEClass: 0482e5f0
Taille: 92 (0x5c) octets
Fichier: C: \ Program Files \ Microsoft Silverlight \ 2.0.31005.0 \ System.Windows.dll
Domaines:
Champ MT Offset Valeur Nom Attr VT
047d97a0 40000dc 4 ... al.NativeResource 0 par exemple 04f5bd58 m_nativePtr
04853ab8 40000df 8 ... System.Windows]] 0 par exemple _valueTable 04f5c0bc
047d9874 40000e0 c ... reTypeEventHelper 0 par exemple 04f5bd88 _coreTypeEventHelper
04856388 40000e3 10 ... BJET,] mscorlib] 0 par exemple 04f5bee8 _treeChildren
047ae03c 40000e4 14 ... rnal.IManagedPeer 0 par exemple 04f79770 _treeParent
03d50a90 40000dd 2B0 System.IntPtr 1 partagé statique StaticNativePointer
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 00000000 <<
03d50f28 40000de 2B4 System.Boolean 1 partagé _isCoreCreate statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 0 <<
047ae384 40000e1 8 .... DependencyObject 0 partagée PropertyReferencesHolder statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f489b8 <<
04661618 40000e2 c ... flection.Assembly 0 statique partagée _executingAssembly
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 00000000 <<
047d0b90 40000f1 18 ... rs.AutomationPeer 0 par exemple 00000000 m_pAP
047d7404 40000e8 10 ... ependencyProperty 0 partagée OpacityProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a4a8 <<
047d7404 40000e9 14 ... ependencyProperty 0 partagée ClipProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a4d0 <<
047d7404 40000ea 18 ... ependencyProperty 0 partagée RenderTransformProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a4f8 <<
047d7404 40000eb 1c ... ependencyProperty 0 statique partagée OpacityMaskProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a50c <<
047d7404 40000ec 20 ... ependencyProperty 0 partagée RenderTransformOriginProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a534 <<
047d7404 40000ed 24 ... ependencyProperty 0 partagée IsHitTestVisibleProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a548 <<
047d7404 40000ee 28 ... ependencyProperty 0 partagée VisibilityProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a570 <<
047d7404 40000ef 2c ... ependencyProperty 0 statique partagée RenderSizeProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a598 <<
047d7404 40000f0 30 ... ependencyProperty 0 partagée UseLayoutRoundingProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a5ac <<
00000000 4000108 1c 0 par exemple 00000000 BindingValidationError
04856ae4 400010a 20 ... angedEventHandler 0 par exemple 00000000 DPChanged
048bc8a4 400010b 24 ... angedEventHandler 0 par exemple 00000000 DataContextChanged
03d50f28 400010c 2c System.Boolean une instance 0 _isDataContextBound
0481f43c 400010d 28 ... angedEventHandler 0 par exemple 00000000 _sizeChanged
047d7404 40000f2 34 ... ependencyProperty 0 partagée TriggersProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a144 <<
047d7404 40000f3 38 ... ependencyProperty 0 partagée ResourcesProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a158 <<
047d7404 40000f4 3c ... ependencyProperty 0 statique partagée LanguageProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a180 <<
047d7404 40000f5 40 ... ependencyProperty 0 partagée ActualWidthProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a194 <<
047d7404 40000f6 44 ... ependencyProperty 0 partagée ActualHeightProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a1a8 <<
047d7404 40000f7 48 ... ependencyProperty 0 partagée WidthProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a1bc <<
047d7404 40000f8 4c ... ependencyProperty 0 statique partagée HeightProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a1d0 <<
047d7404 40000f9 50 ... ependencyProperty 0 partagée MinWidthProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a1e4 <<
047d7404 40000fa 54 ... ependencyProperty 0 partagée MaxWidthProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a1f8 <<
047d7404 40000fb 58 ... ependencyProperty 0 partagée MinHeightProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a20c <<
047d7404 40000fc 5c ... ependencyProperty 0 statique partagée MaxHeightProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a220 <<
047d7404 40000fd 60 ... ependencyProperty 0 partagée HorizontalAlignmentProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a234 <<
047d7404 40000fe 64 ... ependencyProperty 0 partagée VerticalAlignmentProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a248 <<
047d7404 40000ff 68 ... ependencyProperty 0 partagée MarginProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a25c <<
047d7404 4000100 6c ... ependencyProperty 0 statique partagée StyleProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a284 <<
047d7404 4000101 70 ... ependencyProperty 0 partagée ParentProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a2ac <<
047d7404 4000102 74 ... ependencyProperty 0 partagée NameProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a2c0 <<
047d7404 4000103 78 ... ependencyProperty 0 partagée TagProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a2d4 <<
047d7404 4000104 7c ... ependencyProperty 0 statique partagée TagInternalProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a2fc <<
04851464 4000105 80 ... ndows.RoutedEvent 0 partagée LoadedEvent statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a420 <<
047d7404 4000106 84 ... ependencyProperty 0 partagée CursorProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a440 <<
047d7404 4000107 88 ... ependencyProperty 0 partagée InstanceDelegateStoreProperty statiques
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a468 <<
047d7404 4000109 8c ... ependencyProperty 0 statique partagée DataContextProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f5a494 <<
047a1e2c 400010e 90 ... rence, mscorlib]] 0 partagée _staticDelegateList statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 00000000 <<
00000000 4000264 30 ... angedEventHandler 0 par exemple 00000000 IsEnabledChanged
047d7404 4000252 430 ... ependencyProperty 0 partagée IsTabStopProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59ce4 <<
047d7404 4000253 434 ... ependencyProperty 0 partagée TabIndexProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59cf8 <<
047d7404 4000254 438 ... ependencyProperty 0 partagée TemplateProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59d20 <<
047d7404 4000255 43C ... ependencyProperty 0 statique partagée TabNavigationProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59d48 <<
047d7404 4000256 440 ... ependencyProperty 0 partagée PaddingProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59d70 <<
047d7404 4000257 444 ... ependencyProperty 0 partagée HorizontalContentAlignmentProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59d98 <<
047d7404 4000258 448 ... ependencyProperty 0 partagée VerticalContentAlignmentProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59dc0 <<
047d7404 4000259 44c ... ependencyProperty 0 statique partagée BackgroundProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59de8 <<
047d7404 400025a 450 ... ependencyProperty 0 partagée BorderBrushProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59dfc <<
047d7404 400025b 454 ... ependencyProperty 0 partagée BorderThicknessProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59e10 <<
047d7404 400025c 458 ... ependencyProperty 0 partagée FontSizeProperty statique
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59e24 <<
047d7404 400025d 45c ... ependencyProperty 0 statique partagée FontFamilyProperty
>> Thème: Valeur 0433c738: 06f529d8 NotInit: 04f59e4c <<
047d7404  400025e      460 ...ependencyProperty  0   shared   static ForegroundProperty
>> Domain:Value  0433c738:NotInit  06f529d8:04f59e60 <<
047d7404  400025f      464 ...ependencyProperty  0   shared   static FontWeightProperty
>> Domain:Value  0433c738:NotInit  06f529d8:04f59e88 <<
047d7404  4000260      468 ...ependencyProperty  0   shared   static FontStyleProperty
>> Domain:Value  0433c738:NotInit  06f529d8:04f59eb0 <<
047d7404  4000261      46c ...ependencyProperty  0   shared   static FontStretchProperty
>> Domain:Value  0433c738:NotInit  06f529d8:04f59ed8 <<
047d7404  4000262      470 ...ependencyProperty  0   shared   static DefaultStyleKeyProperty
>> Domain:Value  0433c738:NotInit  06f529d8:04f59eec <<
047d7404  4000263      474 ...ependencyProperty  0   shared   static IsEnabledProperty
>> Domain:Value  0433c738:NotInit  06f529d8:04f59f00 <<
04857f14  4000265      478 ... System.Windows]]  0   shared   static _resourceDictionaryCache
>> Domain:Value  0433c738:NotInit  06f529d8:04f5cae4 <<
03cf5668  4000266      47c      System.Object[]  0   shared   static _controlDelgates
>> Domain:Value  0433c738:NotInit  06f529d8:04f59f14 <<
03cf44e8  40002b4       34        System.Object  0 instance 00000000 _treeContent
047d7404  40002b3      530 ...ependencyProperty  0   shared   static ContentTemplateProperty
>> Domain:Value  0433c738:NotInit  06f529d8:04f5bd30 <<
047d7404  40002b5      534 ...ependencyProperty  0   shared   static ContentProperty
>> Domain:Value  0433c738:NotInit  06f529d8:04f5bd44 <<
03d50f28  40005aa       40       System.Boolean  1 instance        1 _isLoaded
03d50f28  40005ab       41       System.Boolean  1 instance        1 _isMouseCaptured
03d50f28  40005ac       42       System.Boolean  1 instance        0 _isSpaceKeyDown
03d50f28  40005ad       43       System.Boolean  1 instance        0 _isMouseLeftButtonDown
04852208  40005ae       48 System.Windows.Point  1 instance 04f5b990 _mousePosition
048b5f98  40005af       38 ...mation.Storyboard  0 instance 00000000 _currentState
03d50f28  40005b0       44       System.Boolean  1 instance        0 _suspendStateChanges
0481fae0  40005b1       3c ...outedEventHandler  0 instance 04f5ca18 Click
047d7404  40005a6      7e0 ...ependencyProperty  0   shared   static ClickModeProperty
>> Domain:Value  0433c738:NotInit  06f529d8:04f5ba7c <<
047d7404  40005a7      7e4 ...ependencyProperty  0   shared   static IsFocusedProperty
>> Domain:Value  0433c738:NotInit  06f529d8:04f5bb38 <<
047d7404  40005a8      7e8 ...ependencyProperty  0   shared   static IsMouseOverProperty
>> Domain:Value  0433c738:NotInit  06f529d8:04f5bbd8 <<
047d7404  40005a9      7ec ...ependencyProperty  0   shared   static IsPressedProperty
>> Domain:Value  0433c738:NotInit  06f529d8:04f5bc40 <<

// dump button.Click field (9 lines above)
0:005> !do 04f5ca18
Name:        System.Windows.RoutedEventHandler
MethodTable: 0481fae0
EEClass:     0482c99c
Size:        32(0x20) bytes
File:        c:\Program Files\Microsoft Silverlight\2.0.31005.0\System.Windows.dll
Domaines:
MT    Field   Offset                 Type VT     Attr    Value Name
03cf44e8  40001e0        4        System.Object  0 instance 04f59c78 _target
04663c58  40001e1        8 ...ection.MethodBase  0 instance 00000000 _methodBase
03d50a90  40001e2        c        System.IntPtr  1 instance 463c08c _methodPtr
03d50a90  40001e3       10        System.IntPtr  1 instance        0 _methodPtrAux
03cf44e8  40001e4       14        System.Object  0 instance 00000000 _invocationList
03d50a90  40001e5       18        System.IntPtr  1 instance        0 _invocationCount

0:005> !do -nofields 04f59c78 // verify _target is page
Nom: SilverlightApplication1.Page
MethodTable: 04633a6c
EEClass:     0463196c
Size:        68(0x44) bytes
Dossier: SilverlightApplication1, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null

// verify _methodPtr points to Button_Click
// see how they are all linked together
0:005> ln 463c08c
(0463c08c)   SilverlightApplication1.Page.Button_Click(System.Object, System.Windows.RoutedEventArgs)
0:005> u 463c08c // jit-ed method stub
SilverlightApplication1.Page.Button_Click(System.Object, System.Windows.RoutedEventArgs):
0463c08c b8303a6304      mov     eax,4633A30h
0463c091 89ed            mov     ebp,ebp
0463c093 e900431c00      jmp     SilverlightApplication1!Button_Click ( 04800398 )
0463c098 0000            add     byte ptr [eax],al
0463c09a 0000            add     byte ptr [eax],al
0463c09c 0000            add     byte ptr [eax],al
0463c09e 0000            add     byte ptr [eax],al
0463c0a0 0000            add     byte ptr [eax],al
0:005> u eip // jit-ed native code
SilverlightApplication1!Button_Click:
04800398 55              push    ebp
04800399 8bec            mov     ebp,esp
0480039b 83ec08          sub     esp,8
0480039e 894dfc          mov     dword ptr [ebp-4],ecx
048003a1 8955f8          mov     dword ptr [ebp-8],edx
048003a4 833d7435630400  cmp     dword ptr ds:[4633574h],0
048003ab 7405            je      SilverlightApplication1!Button_Click+0x1a (048003b2)
048003ad e8862a895f      call    coreclr!JIT_DbgIsJustMyCode (64092e38)
0:005> !ip2md 04800398
MethodDesc: 04633a30
Method Name: SilverlightApplication1.Page.Button_Click(System.Object, System.Windows.RoutedEventArgs)
Class:       0463196c
MethodTable: 04633a6c
mdToken:     06000008
Module:      046333b4
IsJitted:    yes
CodeAddr: 04800398
0:005> !dumpil 04633a30
ilAddr = 047e03fe
IL_0000: nop
IL_0001: ret

When I have time, I may write a blog post on CLR internals, to demonstrate how objects are laid out in memory, how method calls are dispatched etc.

Conclusion

This is a long post, but still it barely constitute an overview of WinDbg and SOS. Good understanding of CLR is important for coding and debugging, WinDbg with SOS is the best tool to explore CLR and do advanced debugging. Hope this short yet long post will help you get started in exploring CLR and Silverlight. Merci!

Technorati Tags: , , , ,

Share and Enjoy:

  • Print
  • email
  • RSS
  • Twitter
  • TwitThis
  • del.icio.us
  • LinkedIn
  • Technorati
  • Facebook
  • Google Bookmarks
  • Live
  • MySpace
  • QQ书签
Categories: Debug , Silverlight Tags: , , ,
  1. Pas encore de commentaires.
  1. Pas encore de trackbacks.