Silverlight Débogage avec WinDbg et SOS
Présentation
En post précédent débogage Silverlight avec Visual Studio , j'ai démontré que Visual Studio est un outil puissant et le plus pratique pour le débogage des applications gérées. Mais pour certains scénarios de débogage avancées, comme la fuite de mémoire, une impasse, un processus de fuite / thread, le débogage du noyau, et avancé le débogage à distance, etc / crash / AC, WinDbg (ou cdb, ntsd, kd) est généralement préférée, si elle n'est pas la seule option.
Outils de débogage pour Windows
Aperçu
WinDbg fait partie de la Debugging Tools pour Windows forfait:
Même si WinDbg est un programme graphique, il est surtout utilisé comme un débogueur en ligne de commande comme (et souvent avec) kd, CDB et NTSD, et de partager le moteur de débogage mêmes et les commandes. Il est super puissant et extensible, particulièrement bien adapté pour le système / bas niveau de débogage comme les conducteurs et autres composants du système d'exploitation. Il exige une bonne connaissance du matériel, système d'exploitation et le compilateur pour obtenir le meilleur parti de la panoplie d'outils. C'est une grande (ou parfait, devrais-je dire
pour le débogage natif, avec ses commandes vaste et extensible et une interface utilisateur graphique. Le support du débogage managé est via l'extension de débogage SOS, n'est pas aussi bon que le débogage natif, mais il ya une valeur inestimable en étant capable de faire du débogage intégrés dans la gestion et la frontière natale, et pour Silverlight, il est le seul outil dont je suis conscient de SOS qui peut charger et ne intégrées de débogage.
Commandes
WinDbg / CDB / NTSD / kd ont été autour depuis longtemps, donc ils sont très bien documentés. Il est fortement recommandé que vous lisez sur Debugging Tools for 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 sont livrés avec l'aide de l'exécution (via |?. Aide | help [<cmd>] tel que discuté ci-dessous), donc un aperçu est généralement suffisant pour obtenir votre commencé.
WinDbg a trois ensembles de commandes:
Standard Commands
Principalement:
- B * des commandes pour définir / clear / liste / activer / désactiver les points d'arrêt sur l'adresse ou l'accès
- D * des commandes pour examiner la mémoire (pile / tas, local / variables globales et les paramètres), E * commande pour modifier la mémoire, et S * pour rechercher la mémoire
- K * des commandes pour examiner la pile des appels
- P, T, G * des commandes pour contrôler l'exécution
ci-dessous? sortie de la commande est une excellente vue d'ensemble et la référence fréquente pour les personnes utilisant WinDbg / CDB / NTSD / kd:
0:006>?
Debugger.chm ouvertes pour la documentation complète débogueur
B [C | D | E] [<bps>] - clair / désactiver / activer breakpoint (s)
BL - points d'arrêt la liste
BA <access> <taille> <addr> - point d'arrêt du processeur correspondant
BP <adresse> - point d'arrêt doux
D [type] [<plage>] - vidage mémoire
DT [-n | y] [[mod] nom!] [[-N | y] des champs]
[Adresse] [L-list] [-a [] | c | i | o | r [#] | v] - informations de type benne à l'aide
Variables de décharge locale - DV [<nom>]
E [type] <adresse> [<values>] - entrez les valeurs de la mémoire
G [H | N] [= <adresse> [<adresse> ...]] - aller
K <count> - stacktrace
KP <count> - stacktrace avec des arguments de source
LM [k | l | u | v] - liste des modules
<expr> LN - symboles le plus proche la liste
P [= <addr>] [<valeur>] - enjamber
Q - Quitter
R [[<reg> [= <expr>]]] - registres afficher ou définir
Mémoire de recherche - S [<opts>] <plage> <values>
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 - spectacle débogué et la version de débogage
X [<* | module >!]<*| symbole> - symboles vue
? <expr> - l'expression d'affichage
? <expr> - Affichage expression C + +
$ <<filename> - Prendre en entrée un fichier de commandeAppuyez sur Entrée ...
<expr> unaire ops: + - non pas par wo dwo qwo poi Salut à faible
ops binaires: + - * / mod (%) et (&) xor (^) ou (|)
comparaisons: == (=) <> =
opérandes: le nombre en base actuelle, symbole public, <reg>
<type>: b (octet), W (mot), d [s] (mot double [avec des symboles]),
un (ASCII), c (DWORD et Char), u (unicode), L (liste)
f (float), D (double), s | S (ASCII / Unicode string)
q (quadword)
<motif>: [(nt | <dll-name>)!] <var-name> (<var-name> peut inclure et *?)
<plage>: <adresse> <adresse>
: L <adresse> <count>User-mode options:
~ - Liste des discussions d'état
~ # S - fil par défaut
| - Liste des processus du statut
| # S - processus par défautoptions x86:
DG <selector> - Sélecteur de dépotoir
<reg>: [e] hache, [e] bx, [e] cx, [e] dx, [e] si, [e] di [e] pb, [e] sp, [e] IP [ e] fl,
al, ah, BL, BH, CL, CH, DL, DH, CS, DS, ES, FS, GS, ss
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>: # <16-bit mode protégé [SEG:]> adresse,
& <V86-mode [seg:]address>Debugger.chm ouvertes pour la documentation complète débogueur
Commandes Meta
Ceux commençant par un point, principalement pour le débogage avancées. Certaines commandes importantes que vous devez savoir:
- . Symfix et. Sympath pour l'utilisation de serveur de symbole
- . Srcfix et. Srcpath pour utiliser le serveur source
- . Charge,. Loadby,. Décharger,. Chaîne,. Setdll pour gérer les extensions de débogage
- . Serveur,. À distance pour le débogage à distance
Il est bien utile de votre temps pour vous familiariser avec le serveur de symbole, le serveur source et le débogage à distance: ils vont vous rendre la vie beaucoup plus facile. est inférieure à la sortie de la commande de l'aide.:
0:006>. Aide
. commandes:
. Abandon - abandonner le processus actuel
. Allow_exec_cmds [0 | 1] - commandes d'exécution de contrôle
. Allow_image_mapping [0 | 1] - le contrôle à la demande de cartographie fichier image
. Apply_dbp [<options>] - ajouter l'état actuel des données vers un point d'arrêt
inscrire le contexte
. Asm [<options>] - définir les options de démontage
. Asm-[<options>] - options claires de démontage
. Attachent <proc> - attacher à <proc> à la prochaine exécution
. Bloc {} <commandes> - entre parenthèses un ensemble de commandes pour l'exécution imbriqués
. Bpsync [0 | 1] - comportement de point d'arrêt spéciale pour debuggees multithread
. Pause - sortir de la boucle entourant
. Breakin - pénétrer KD
. Cache [<options>] - contrôle virtuel du cache mémoire
. Appelez <Fn> (<arg1>, <arg2>, ...) - exécuter une fonction dans le programme débogué
. Catch {} <commandes> - rattraper les échecs dans les commandes
. Chaîne - la liste des extensions actuelles
. Childdbg <0 | 1> - processus de débogage enfant tourne sous ou hors tension
. Clients - les clients liste actuellement actif
. CloseHandle [<options>] [<handle>] - fermer le handle donné
. Continuer - continuer la boucle entourant
. Copysym [<options>] <path> - copier les fichiers symbole courant vers un répertoire
. Créer des <ligne - créer un nouveau processus
. Createdir [<options>] [<chemin>] - options de contrôle de processus de création
. <adresse> CXR - enregistrement de contexte dépotoir à l'adresse spécifiée
* k après cela donne pile CXR
. Dbgdbg - attacher un débogueur au débogueur en cours
. Debug_sw_wow [0 | 1] - permettent une interaction avec l'émulation du logiciel WOW
. Détacher - se détacher de l'actuel processus / dump
. Dml_file <fichier> - DML contenu du fichier de sortie de
. Dml_flow <début> <addr> - spectacle débit de base du code de bloc
. Aperçu des activités navigables débogueur - dml_start [<options>]
. Do {} <commandes> (<cond>) - exécuter <commandes> jusqu'au <cond> est nul
. Conducteurs - Cette commande a été retirée - utilisez '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> - mémoire VirtualFree dans le programme débogué
. Écho ["<chaîne>" | <string>] - echo chaîne
. Echotime - temps débogueur de sortie
. Echotimestamps [0 | 1] - Sortie timestamp alterner sur les événements
. Ecxr - enregistrement de contexte pour le dépotoir exception actuelle
. Effmach [<machine>] - changement de type de machine en cours
.} Else {<commandes> - if / then / else exécution conditionnelle
. Elsif (<cond>) {} <commandes> [<else clauses>] - if / then / else conditionnelle
l'exécution
. Enable_long_status [0 | 1] - les types LONG en dépotoir de base par défaut
. Enable_unicode [0 | 1] - cordes array USHORT dump / pointeurs et unicode
. Endsrv <id> - désactiver le serveur du moteur donnée
. Endpsrv - provoquer un serveur distant à la session en cours pour sortir de
. Enumtag - énumérer les données disponibles taggés
. Event_code - afficher des instructions évènement en cache
. Eventlog - affichage du journal d'événements récents
. Événements - affichage et sélectionner les événements disponibles
. Eventstr - afficher toute les chaînes d'événements enregistrés par le programme débogué
. ExePath <dir> [[;...]] - chemin de recherche mis en exécutable
. ExePath + [<dir> [;...]] - append chemin de recherche exécutable
. Expr - expression de contrôle évaluateur
. Exptr <adresse> -.. Ne EXR et CXR pour EXCEPTION_POINTERS
. <adresse> EXR - enregistrement d'exception dépotoir à l'adresse spécifiée
. Extmatch [<opts>] <motif> - afficher toutes les extensions pattern matching
. Extpath <opts> <dir> [[;...]] - chemin de recherche kit d'extension
. Extpath + <opts> [<dir> [;...]] - append chemin de recherche d'extension
. F + - stack frame ensemble actuel d'appel d'image courante
. F-- cadre mis en pile actuelle de l'appelé du cadre actuel
. Fibre <adresse> - définit le contexte de la fibre à l'adresse
contexte réinitialise si aucune adresse spécifiée
. Fiximports <motif> - les tentatives de lier les importations pour les images
<adresse> Fnent -. Entrée de fonction décharge pour l'adresse de code donné
. Fnret <fnaddr> [<retval>] - valeur de retour d'affichage formaté
. Pour (<init>; <cond>; <step>) {} <commandes> - exécuter et <commandes>
<step> jusqu'au <cond> est
zéro
. Force_radix_output [0 | 1] - les types entiers de vidage dans la base par défaut
. Force_system_init [<options>] - systèmes vigueur en attendant d'initialiser si possible
. Force_tb - force permettent la branche de traçage
. Foreach [opte] ({<alias> <tcmds>}) {} <ecmds> - exécuter des <ecmds>
chaque jeton dans la
sortie de <tcmds>
. FPO <options> - contrôle prennent FPO informations
. Cadre [<frame>] - cadre mis en pile courante pour les habitants
. Formats <expr> - résultat de l'expression affiche dans de nombreux formats
. Aide [<options>] - afficher l'aide
. Holdmem <options> [large] - détenir et de comparer les données de la mémoire
. If (<cond>) {} <commandes> [<else clauses>] - if / then / else conditionnelle
l'exécution
. Ignore_missing_pages [0 | 1] - dump de synthèse de contrôle du noyau manquants
message d'erreur la page
. Imgscan <options> - balayage de mémoire pour les images PE
. Jdinfo <jdi_addr> - interpréter les informations AeDebug
. Kframes <count> - par défaut trace de la pile de profondeur
. KILL - Tue le processus en cours
. Lastevent - afficher le dernier événement qui a eu lieu
. Quitter - quitter le joignant attraper.
. Lignes - basculer le chargement symbole de la ligne
<name> Charge -. Ajouter cette extension DLL à la chaîne d'extension
. Loadby <name> <mod> - ajouter l'extension DLL dans le module
répertoire à la chaîne d'extension
. Locale [<locale>] - définir les paramètres régionaux actuels
. Logfile - Statut d'affichage du journal
. Logopen [<file>] - ouvrir le fichier log de nouvelles
. Logappend [<file>] - Ajouter au fichier journal
. Logclose - fichier de log à proximité
. Netsyms [0 | 1] - autoriser / interdire les chemins symbole nette
. Netuse [<options>] - gérer les connexions nettes
. Noshell - commandes shell désactiver
. Noversion - version désactiver la vérification de l'extension
. OFilter <motif> - filtre de sortie débogué contre le motif donné
. Ocommand <préfixe> - Sortie traiter avec le préfixe donné comme une commande
. Opendump <fichier> - ouvrir un fichier de vidage
Bits définis dans le masque de courant de sortie - <masque> outmask.
. Outmask-<masque> - bits de clair dans le masque courant de sortie
. Pcmd [<options>] - Contrôle par l'invite de commande
. Contextuel [<options>] - Etat pop
. Prefer_dml [0 | 1] - défaut de contrôle en mode LMD
. Printf "<format>", <args…> - sortie formatée
. Processus [<adresse>] - jeux processus implicite
défaut réinitialise si aucune adresse spécifiée
. Prompt_allow [<options>] - contrôler les informations peuvent être affichées
à l'invite
. Poussez [<options>] - Etat poussez
. Quit_lock [<options>] - session de serrures contre quittez inattendus
. Readmem <file> <plage> - lire la mémoire brute provenant d'un fichier
. Record_branches [0 | 1] - commandes d'enregistrement de processeur de branchement
. Reload [<image.ext> [= <adresse>, <taille>]] - symboles de rechargement
. Redémarrer - demander une session redémarrer
. <pipename> Distance - démarrage du serveur remote.exe
. Sécurisé [0 | 1] - les opérations interdire dangereux pour l'hôte
. Send_file <options> - envoyer des fichiers vers un serveur distant
. <options> Serveur - le serveur de démarrage du moteur
. Serveurs - serveurs de liste remoting actifs
. Setdll <name> - débogueur va rechercher des extensions dans cette première DLL
. Shell [<commande>] - exécuter commande shell
. Show_read_failures [<opts>] - Contrôle de sortie supplémentaire non lus
. Show_sym_failures [<opts>] - Contrôle de sortie supplémentaire panne symbole
. <millisecondes> Sommeil - débogueur dort pour une durée donnée
utile pour permettre l'accès à une machine qui
cassée dans sur un ntsd-d
. Srcfix [<chemin extra>] - chemin de recherche de source fixe
. Srcfix + [<chemin extra>] - append chemin fixe de recherche de source
. Srcnoisy [0 | 1] - le contrôle de sortie verbeuse chargement à la source
. Srcpath <dir> [[;...]] - chemin de recherche mis de source
. Srcpath + <dir> [[;...]] - chemin append recherche de source
. Step_filter [<opts>] ["<motif> [; <motif> ...]"] - schémas du jeu de symboles
à sauter lors de l'intensification
. Symfix [<localsym>] - chemin de recherche fixent le symbole
. Symfix + [<localsym>] - append chemin fixe de recherche de symboles
. Symopt <flags> - options jeu de symboles
. Symopt + <flags> - options jeu de symboles
. Symopt-<flags> - options symbole clair
. Sympath <dir> [[;...]] - chemin de recherche du jeu de symboles
. Sympath + [<dir> [;...]] - append chemin de recherche symboles
. Thread [<adresse>] - définit le contexte de fil à l'adresse
contexte par défaut réinitialise si aucune adresse spécifiée
. Temps - affiche des informations temps de session
. THeure - affiche des informations thread temps
. Tlist - liste les processus actifs
. Typeopt <flags> - set / options de type claires
. Déchargent <name> - supprimer cette extension DLL de la liste des DLL d'extension
. Unloadall - supprimer toutes les DLL d'extension de la liste des extensions DLL
. Sillage - réveiller un débogueur sleep'ing.
. While (<cond>) {} <commandes> - exécuter <commandes> tout <cond> est non-nul
. <file> <plage> Writemem - écriture de la mémoire brutes dans un fichierUtilisez ". <commande> Hh» ou Debugger.chm ouvrir dans le répertoire des débogueurs pour obtenir
documentation détaillée sur une commande.
Commandes d'extension
Ceux commencer!, Généralement pour un domaine particulier, comme des commandes d'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 de fuites de mémoire, etc impasse, vous devez être très familier avec les commandes d'extension.
SOS
Aperçu
SOS est l'acronyme de Fils de grève (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 pour CLR débogage CLR, donc il a été autour depuis longtemps, et il ya beaucoup de bonnes informations sur le web. Quelques lectures recommandées:
- Extension de débogage SOS sur MSDN
- Blog de Jason Zander: débogage SOS du CLR
Chaque version du CLR a son propre SOS (NET Framework 3.5 utilise encore CLR 2.0 et Silverlight a sa propre CLR.)
Répertoire de C: \ Program Files \ Debugging Tools for Windows \ clr10
19/09/2007 19:01 948784 sos.dll
1 fichier (s) 948 784 octetsRépertoire de C: \ Program Files \ Microsoft Silverlight \ 2.0.31005.0
05/10/2008 02:16 495424 sos.dll
1 fichier (s) 495 424 octetsRépertoire de C: \ Windows \ Microsoft.NET \ Framework \ v1.1.4322
15/07/2004 00:35 319488 SOS.dll
1 fichier (s) 319 488 octetsRépertoire de C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727
27/07/2008 10:03 392184 SOS.dll
1 fichier (s) 392 184 octets
Commandes
Aide SOS moment de l'exécution est si grand que vous avez failli ne pas besoin de doc autre que d'essayer quelques erreurs et une certaine frustration ![]()
0:016>! Aide
---------------------------
SOS est une extension DLL débogueur conçu pour aider à la mise au point d'gérées
des 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 indiqués entre parenthèses.
Tapez "Aidez <functionname>» pour les informations détaillées sur cette fonction.Code d'objet d'inspection et d'examen des piles
---------- ----------
DumpObj (ne) Threads
DumpArray (da) clrstack
DumpStackObjects (DSO) IP2MD
Dumpheap U
DumpVC DumpStack
EEStack gcroot
ObjSize gcinfo
FinalizeQueue EHInfo
PrintException (EH) COMState
TraverseHeap AMTAL'examen des structures de données CLR utilitaires de diagnostic
---------- ----------
DumpDomain VerifyHeap
EEHeap VerifyObj
FindRoots Name2EE
SyncBlk HeapStat
DumpMT GCWhere
DumpClass ListNearObj (LNO)
GCHandles DumpMD
Token2EE GCHandleLeaks
EEVersion FinalizeQueue (FQ)
FindAppDomain DumpModule
SaveModule ThreadPool
DumpAssembly procinfo
DumpSigElem StopOnException (SOE)
DumpRuntimeTypes DumpLog
DumpSig VMMap
Vmstat RCWCleanupList
DumpIL MinidumpMode
AnalyzeOOM (AO)Examiner l'histoire GC Autres
---------- ----------
HistInit FAQ
HistStats
HistRoot
HistObj
HistObjFind
HistClear
Démonstration de débogage échantillon
Je vais utiliser la même application la plus simple Silverlight dans post précédent ( Silverlight Débogage avec Visual Studio ) pour démontrer WinDbg débogage avec SOS:
Voici le journal de débogage avec mes annotations (commencer par / /):
/ / Mise en place chemin de symbole à utiliser le serveur de symbole
0:013>. Sympath
Chemin de recherche Symbol est: <empty>
0:013> symfix C:. \ Users \ ningz \ AppData \ Local \ Temp \ Symbols
0:013>. Sympath
Chemin de recherche Symbol est: SRV * C: \ Users \ ningz \ AppData \ Local \ Temp \ Symbols \ * \ symbols \ symboles/ / Ajouter le chemin pdb 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 Symbol est: SRV * C: \ Users \ ningz \ AppData \ Local \ Temp \ Symbols *
http://msdl.microsoft.com/download/symbols;
C: \ Users \ ningz \ Documents \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ Bin SilverlightApplication1 \ \ Debug/ / Recharger tous les symboles
0:013>. Reload
Rechargement des modules actuels
/ / Mise en place du chemin source à utiliser le serveur source
0:013>. Srcpath
Chemin de recherche de source est: <empty>
0:013>. Srcfix
Chemin de recherche de source est: SRV *
0:013> srcpath +. "C: \ Users \ ningz \ Documents \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ SilverlightApplication1"
Chemin de recherche de source est: SRV * C: \ Users \ ningz \ Documents \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ SilverlightApplication1/ / Chargement de SOS. S'il vous plaît noter:
/ / 1. il semble mscorwks est remplacé par CoreCLR dans Silverlight
/ / 2. . lieu de loadby, vous pouvez également utiliser la charge "C: \ Program Files \ Microsoft Silverlight \ 2.0.31005.0 \ sos.dll".
0:013>. Loadby SOS CoreCLR
Loaded C: \ Program Files \ Microsoft Silverlight \ 2.0.31005.0 \ DLL extension SOS/ / Définir un point d'arrêt pour le gestionnaire d'événement bouton de clic
0:013>! AMTA SilverlightApplication1 SilverlightApplication1.Page.Button_Click
Trouvé une des méthodes ...
MethodDesc = 03983a30
Ajout des points d'arrêt en suspens ...
0:013> bl
0 e 0428215b 0001 (0001) 0 :****
0:013> g
Modload: 70800000 7080c000 C: Windowssystem32dwmapi.dll/ / Cliquez sur le bouton et percer dans WinDbg
Breakpoint 0 frappé
*** ATTENTION: Impossible de vérifier checksum pour SilverlightApplication1.dll
! SilverlightApplication1 Button_Click:
04850398 55 PUSH EBP
Débogage intégré géré ne supporte pas l'énumération des variables locales.
Voir http://dbg/managed.htm pour plus de détails.
Traitement de trame gérée échoué, HRESULT 0x80004005/ / Comparer! Fils et de sortie ~ *
0:005>! Fils / / liste de threads gérés uniquement
Threadcount: 3
UnstartedThread: 0
BackgroundThread: 3
PendingThread: 0
DeadThread: 0
Hébergé Runtime: oui
PreEmptive verrouillage Alloc GC
ID OSID ThreadOBJ Etat Domain Contexte GC Comte Exception APT
5 1 1b08 043576e0 220 handicapés 04f9f214: 04f9ffe8 06f529d8 0 STA
9 2 928 043689c8 B220 Enabled 00000000:00000000 0433c738 0 MTA (Finalizer)
10 3 1220 1e8c 06f509d0 Enabled 00000000:00000000 0433c738 0 UKN
0:005> ~ * / / la liste de toutes les discussions
0 Id: 162c.1a28 Suspend: 1 Teb: 7ffde000 dégelés
Début: iexplore wWinMainCRTStartup (00a52d79)
Priorité: 0 Classe de priorité: 32 Affinité: 3
2 Id: 162c.1020 Suspend: 1 Teb: 7ffdc000 dégelés
Début: ole32 CRpcThreadCache:: RpcWorkerThreadEntry (76dfe0cc)
Priorité: 0 Classe de priorité: 32 Affinité: 3
3 Id: 162c.1e00 Suspend: 1 Teb: 7ffda000 dégelés
Début: ntdll TppWaiterpThread (778ab61b)
Priorité: 0 Classe de priorité: 32 Affinité: 3
4 Id: 162c.1f00 Suspend: 1 Teb: 7ffd9000 dégelés
Début: msvcrt _endthreadex 0 x6f (76162da8)
Priorité: 0 Classe de priorité: 32 Affinité: 3
. 5 Id: 162c.1b08 Suspend: 1 Teb: 7ffd8000 dégelés
Début: IEFRAME CTabWindow:: _TabWindowThreadProc (6c163fdb)
Priorité: 0 Classe de priorité: 32 Affinité: 3
7 Id: 162c.170 Suspend: 1 Teb: 7ffd6000 dégelés
Début: npctrl CXcpDispatcher:: DispatcherTimerCallback (6a6d16f4)
Priorité: 0 Classe de priorité: 32 Affinité: 3
8 Id: 162c.1cd0 Suspend: 1 Teb: 7ffd5000 dégelés
Début: CoreCLR DebuggerRCThread:: ThreadProcStatic (640eb5cd)
Priorité: 0 Classe de priorité: 32 Affinité: 3
9 Id: 162c.928 Suspend: 1 Teb: 7ffd4000 dégelés
Début: CoreCLR Thread:: intermediateThreadProc (63fb8e4f)
Priorité: 0 Classe de priorité: 32 Affinité: 3
10 Id: Suspendre 162c.1e8c: 1 Teb: 7ffd3000 dégelés
Début: CoreCLR Thread:: intermediateThreadProc (63fb8e4f)
Priorité: 0 Classe de priorité: 32 Affinité: 3
11 Id: Suspendre 162c.1fac: 1 Teb: 7ffaf000 dégelés
Début: agcore CMulticoreTaskScheduler:: WorkerThread (660547de)
Priorité: 0 Classe de priorité: 32 Affinité: 3
12 Id: 162c.1b78 Suspend: 1 Teb: 7ffae000 dégelés
Début: agcore CMulticoreTaskScheduler:: WorkerThread (660547de)
Priorité: 0 Classe de priorité: 32 Affinité: 3
13 Id: 162c.1d18 Suspend: 1 Teb: 7ffdb000 dégelés
Début: ntdll RtlUserThreadStart (778c9a78)
Priorité: 0 Classe de priorité: 32 Affinité: 3
Traitement de trame gérée échoué, HRESULT 0x80004005
Débogage intégré géré ne supporte pas l'énumération des variables locales.
Voir http://dbg/managed.htm pour plus de détails./ / Comparer! De sortie clrstack & k
0:005>! Clrstack-p / / liste gérée cadres de pile seulement
ID de thread OS: 0x1b08 (5)
ESP EIP
0450f850 04800398 SilverlightApplication1.Page.Button_Click (System.Object, System.Windows.RoutedEventArgs)
PARAMETRES:
présent (<CLR reg>) = 0x04f59c78
expéditeur (<CLR reg>) = 0x04f5b948
e (0x0450f854) = 0x04f9f1f00450f858 048cde0d System.Windows.Controls.Primitives.ButtonBase.OnClick ()
PARAMETRES:
présent (0x0450f864) = 0x04f5b9480450f870 048cdd10 System.Windows.Controls.Button.OnClick ()
PARAMETRES:
ce = <aucun data>0450f880 048cdc3d
PARAMETRES:
présent (0x0450f884) = 0x04f5b948
e (0x0450f880) = 0x04f9f1880450f890 048cdba1 System.Windows.Controls.Control.OnMouseLeftButtonUp (System.Windows.Controls.Control, System.EventArgs)
PARAMETRES:
ctrl = <aucun data>
e = <aucun data>0450f8a0 0483a0e7 MS.Internal.JoltHelper.FireEvent (IntPtr, IntPtr, Int32, System.String)
PARAMETRES:
unmanagedObj (0x0450f8f8) = 0x04355c48
unmanagedObjArgs (0x0450f8f4) = 0x0707be00
argsTypeIndex (0x0450f928) = 0x000000a9
eventName (0x0450f924) = 0x04f9f16c0450fa74 63ef17b0 [GCFrame: 0450fa74]
0450fb30 63ef17b0 [ContextTransitionFrame: 0450fb30]
0450fc28 63ef17b0 [UMThkCallFrame: 0450fc28]
0:005> KP / / liste de tous les cadres 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 048cdc3d System_Windows! 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 63f032bc CoreCLR! CallDescrWorkerWithHandler 0 x8e
0450f9d0 63f0345c CoreCLR! ForwardCallToManagedMethod 0 x55
0450faf4 63fc4abf CoreCLR! DoUMThunkCallWorker 0 X199
0450fbe0 04c513d2 CoreCLR! DoUMThunkCall 0 x1b4
AVERTISSEMENT: IP Cadre non dans n'importe quel module connu. Suite à des cadres peut être erroné.
0450fc10 6607e0db 0x4c513d2
0450fc70 6a6dc1fc agcore CCoreServices:: 0 CLR_FireEvent x183
Traitement de trame gérée échoué, HRESULT 0x80004005
0450fc84 6a6dc187 npctrl CommonBrowserHost:: 0 CLR_FireEvent x2A
0450fcc8 6a6dc048 npctrl CControlBase:: 0 ScriptCallback x366
0450fd08 6a6dc013 npctrl CXcpDispatcher:: 0 OnScriptCallback XEE
! 0450fd14 6a6dbfef npctrl CXcpDispatcher:: 0 OnWindowMessage X3A
0450fd2c 7731f8d2 npctrl CXcpDispatcher:: WindowProc 0 x7f
0450fd58 7731f794 User32! InternalCallWinProc 0 x23
0450fdd0 77320008 User32! UserCallWinProcCheckWow 0 x14b/ / Examiner tas, noter la commodité des tas d'objets solides dactylographiées,
/ / Au lieu d'ONU-octets tapé comme dans tas native
0:005>! Dumpheap type SilverlightApplication1
Taille MT Adresse
04f4f31c 046336b0 36
04f59c78 04633a6c 68
total de 2 objets
Statistiques:
MT Comte Nom de classe TotalSize
046336b0 1 36 SilverlightApplication1.App
04633a6c 1 68 SilverlightApplication1.Page
Total des deux objets
0:005>! Ne 04f59c78
Nom: SilverlightApplication1.Page
MethodTable: 04633a6c
EEClass: 0463196c
Taille: 68 (0x44) octets
Fichier: SilverlightApplication1, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null
Domaines:
Champ MT offset type VT Nom de la valeur Attr
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 une commune StaticNativePointer statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 00000000 <<
03d50f28 40000de 2b4 System.Boolean une _isCoreCreate statique partagée
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 0 <<
047ae384 40000e1 8 .... DependencyObject 0 partagée PropertyReferencesHolder statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f489b8 <<
04661618 40000e2 c ... flection.Assembly 0 statique partagée _executingAssembly
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 00000000 <<
047d0b90 40000f1 18 ... rs.AutomationPeer 0 par exemple 00000000 m_pAP
047d7404 40000e8 10 ... 0 ependencyProperty partagé OpacityProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a4a8 <<
047d7404 40000e9 14 ... 0 ependencyProperty partagé ClipProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a4d0 <<
047d7404 40000ea 18 ... 0 ependencyProperty partagé RenderTransformProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a4f8 <<
047d7404 40000eb 1c ... ependencyProperty 0 partagée OpacityMaskProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a50c <<
047d7404 40000ec 20 ... 0 ependencyProperty partagé RenderTransformOriginProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a534 <<
047d7404 40000ed 24 ... 0 ependencyProperty partagé IsHitTestVisibleProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a548 <<
047d7404 40000ee 28 ... 0 ependencyProperty partagé VisibilityProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a570 <<
047d7404 40000ef 2c ... ependencyProperty 0 partagée RenderSizeProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a598 <<
047d7404 40000f0 30 ... 0 ependencyProperty partagé UseLayoutRoundingProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a5ac <<
00000000 4000108 0 1c 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 ... 0 ependencyProperty partagé TriggersProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a144 <<
047d7404 40000f3 38 ... 0 ependencyProperty partagé ResourcesProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a158 <<
047d7404 40000f4 3c ... ependencyProperty 0 partagée LanguageProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a180 <<
047d7404 40000f5 40 ... 0 ependencyProperty partagé ActualWidthProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a194 <<
047d7404 40000f6 44 ... 0 ependencyProperty partagé ActualHeightProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a1a8 <<
047d7404 40000f7 48 ... 0 ependencyProperty partagé WidthProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a1bc <<
047d7404 40000f8 4c ... ependencyProperty 0 partagée HeightProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a1d0 <<
047d7404 40000f9 50 ... 0 ependencyProperty partagé MinWidthProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a1e4 <<
047d7404 40000fa 54 ... 0 ependencyProperty partagé MaxWidthProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a1f8 <<
047d7404 40000fb 58 ... 0 ependencyProperty partagé MinHeightProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a20c <<
047d7404 40000fc 5c ... ependencyProperty 0 partagée MaxHeightProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a220 <<
047d7404 40000fd 60 ... 0 ependencyProperty partagé HorizontalAlignmentProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a234 <<
047d7404 40000fe 64 ... 0 ependencyProperty partagé VerticalAlignmentProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a248 <<
047d7404 40000ff 68 ... 0 ependencyProperty partagé MarginProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a25c <<
047d7404 4000100 6c ... ependencyProperty 0 partagée StyleProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a284 <<
047d7404 4000101 70 ... 0 ependencyProperty partagé ParentProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a2ac <<
047d7404 4000102 74 ... 0 ependencyProperty partagé NameProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a2c0 <<
047d7404 4000103 78 ... 0 ependencyProperty partagé TagProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a2d4 <<
047d7404 4000104 7c ... ependencyProperty 0 TagInternalProperty statique partagée
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a2fc <<
04851464 4000105 80 ... 0 ndows.RoutedEvent partagé LoadedEvent statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a420 <<
047d7404 4000106 84 ... 0 ependencyProperty partagé CursorProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a440 <<
047d7404 4000107 88 ... 0 ependencyProperty partagé InstanceDelegateStoreProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a468 <<
047d7404 4000109 8c ... ependencyProperty 0 partagée DataContextProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a494 <<
047a1e2c 400010e 90 ... rence, mscorlib]] 0 _staticDelegateList statique partagée
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 00000000 <<
00000000 4000264 30 ... angedEventHandler 0 par exemple 00000000 IsEnabledChanged
047d7404 4000252 430 ... 0 ependencyProperty partagé IsTabStopProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59ce4 <<
047d7404 4000253 434 ... 0 ependencyProperty partagé TabIndexProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59cf8 <<
047d7404 4000254 438 ... 0 ependencyProperty partagé TemplateProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59d20 <<
047d7404 4000255 43c ... ependencyProperty 0 partagée TabNavigationProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59d48 <<
047d7404 4000256 440 ... 0 ependencyProperty partagé PaddingProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59d70 <<
047d7404 4000257 444 ... 0 ependencyProperty partagé HorizontalContentAlignmentProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59d98 <<
047d7404 4000258 448 ... 0 ependencyProperty partagé VerticalContentAlignmentProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59dc0 <<
047d7404 4000259 44c ... ependencyProperty 0 partagée BackgroundProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59de8 <<
047d7404 400025a 450 ... 0 ependencyProperty partagé BorderBrushProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59dfc <<
047d7404 400025b 454 ... 0 ependencyProperty partagé BorderThicknessProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59e10 <<
047d7404 400025c 458 ... 0 ependencyProperty partagé FontSizeProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59e24 <<
047d7404 400025d 45c ... ependencyProperty 0 partagée FontFamilyProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59e4c <<
047d7404 400025e 460 ... 0 ependencyProperty partagé ForegroundProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59e60 <<
047d7404 400025f 464 ... 0 ependencyProperty partagé FontWeightProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59e88 <<
047d7404 4000260 468 ... 0 ependencyProperty partagé FontStyleProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59eb0 <<
047d7404 4000261 46c ... ependencyProperty 0 partagée FontStretchProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59ed8 <<
047d7404 4000262 470 ... 0 ependencyProperty partagé DefaultStyleKeyProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59eec <<
047d7404 4000263 474 ... 0 ependencyProperty partagé IsEnabledProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59f00 <<
04857f14 4000265 478 ... System.Windows]] 0 partagée _resourceDictionaryCache statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5cae4 <<
03cf5668 4000266 47c System.Object [] 0 partagée _controlDelgates statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59f14 <<
047d7404 4000501 77c ... ependencyProperty 0 partagée ContentProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 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 1 instance une _contentLoaded/ / Deux lignes ci-dessus est l'objet bouton de l'objet page
/ / Rappelez-vous son adresse 04f5b948, puisque nous y 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 de 1 objets
Statistiques:
MT Comte Nom de classe TotalSize
04852a10 1 92 System.Windows.Controls.Button
Total des objets 1
0:005>! Gcwhere 04f5b948 / / bouton est dans Gen0, car il n'existe pas encore GC
Segment des tas Adresse Gen commence taille allouée
04f5b948 0 0 04f40000 04f41000 04f9fff4 0x5c (92)
0:005>! Gcroot 04f5b948 / / voir qui est maintenant référence à l'objet bouton
Remarque: Les racines trouvées sur les piles peuvent être de faux positifs. Run "! Aide gcroot» pour
plus d'info.
/ / Registre de références
ecx: Racine: 04f59c78 (SilverlightApplication1.Page) ->
04f5b948 (System.Windows.Controls.Button) ->
EDX: Racine: 04f5b948 (System.Windows.Controls.Button) ->
/ / Pile références
Balayage 1b08 OSTHread filetage 5
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) ->
Discussion de numérisation 9 928 OSTHread
Balayage 1e8c OSTHread fil 10
/ / Le domaine des références
DOMAINE (06F529D8): MANCHE (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 de trame gérée échoué, HRESULT 0x80004005
Débogage intégré géré ne supporte pas l'énumération des variables locales.
Voir http://dbg/managed.htm pour plus de détails./ / Examiner l'objet bouton 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 type VT Nom de la valeur Attr
047d97a0 40000dc 4 ... al.NativeResource 0 par exemple 04f5bd58 m_nativePtr
04853ab8 40000df 8 ... System.Windows]] 0 par exemple 04f5c0bc _valueTable
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 une commune StaticNativePointer statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 00000000 <<
03d50f28 40000de 2b4 System.Boolean une _isCoreCreate statique partagée
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 0 <<
047ae384 40000e1 8 .... DependencyObject 0 partagée PropertyReferencesHolder statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f489b8 <<
04661618 40000e2 c ... flection.Assembly 0 statique partagée _executingAssembly
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 00000000 <<
047d0b90 40000f1 18 ... rs.AutomationPeer 0 par exemple 00000000 m_pAP
047d7404 40000e8 10 ... 0 ependencyProperty partagé OpacityProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a4a8 <<
047d7404 40000e9 14 ... 0 ependencyProperty partagé ClipProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a4d0 <<
047d7404 40000ea 18 ... 0 ependencyProperty partagé RenderTransformProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a4f8 <<
047d7404 40000eb 1c ... ependencyProperty 0 partagée OpacityMaskProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a50c <<
047d7404 40000ec 20 ... 0 ependencyProperty partagé RenderTransformOriginProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a534 <<
047d7404 40000ed 24 ... 0 ependencyProperty partagé IsHitTestVisibleProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a548 <<
047d7404 40000ee 28 ... 0 ependencyProperty partagé VisibilityProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a570 <<
047d7404 40000ef 2c ... ependencyProperty 0 partagée RenderSizeProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a598 <<
047d7404 40000f0 30 ... 0 ependencyProperty partagé UseLayoutRoundingProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a5ac <<
00000000 4000108 0 1c 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 ... 0 ependencyProperty partagé TriggersProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a144 <<
047d7404 40000f3 38 ... 0 ependencyProperty partagé ResourcesProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a158 <<
047d7404 40000f4 3c ... ependencyProperty 0 partagée LanguageProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a180 <<
047d7404 40000f5 40 ... 0 ependencyProperty partagé ActualWidthProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a194 <<
047d7404 40000f6 44 ... 0 ependencyProperty partagé ActualHeightProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a1a8 <<
047d7404 40000f7 48 ... 0 ependencyProperty partagé WidthProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a1bc <<
047d7404 40000f8 4c ... ependencyProperty 0 partagée HeightProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a1d0 <<
047d7404 40000f9 50 ... 0 ependencyProperty partagé MinWidthProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a1e4 <<
047d7404 40000fa 54 ... 0 ependencyProperty partagé MaxWidthProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a1f8 <<
047d7404 40000fb 58 ... 0 ependencyProperty partagé MinHeightProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a20c <<
047d7404 40000fc 5c ... ependencyProperty 0 partagée MaxHeightProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a220 <<
047d7404 40000fd 60 ... 0 ependencyProperty partagé HorizontalAlignmentProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a234 <<
047d7404 40000fe 64 ... 0 ependencyProperty partagé VerticalAlignmentProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a248 <<
047d7404 40000ff 68 ... 0 ependencyProperty partagé MarginProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a25c <<
047d7404 4000100 6c ... ependencyProperty 0 partagée StyleProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a284 <<
047d7404 4000101 70 ... 0 ependencyProperty partagé ParentProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a2ac <<
047d7404 4000102 74 ... 0 ependencyProperty partagé NameProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a2c0 <<
047d7404 4000103 78 ... 0 ependencyProperty partagé TagProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a2d4 <<
047d7404 4000104 7c ... ependencyProperty 0 TagInternalProperty statique partagée
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a2fc <<
04851464 4000105 80 ... 0 ndows.RoutedEvent partagé LoadedEvent statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a420 <<
047d7404 4000106 84 ... 0 ependencyProperty partagé CursorProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a440 <<
047d7404 4000107 88 ... 0 ependencyProperty partagé InstanceDelegateStoreProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a468 <<
047d7404 4000109 8c ... ependencyProperty 0 partagée DataContextProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5a494 <<
047a1e2c 400010e 90 ... rence, mscorlib]] 0 _staticDelegateList statique partagée
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 00000000 <<
00000000 4000264 30 ... angedEventHandler 0 par exemple 00000000 IsEnabledChanged
047d7404 4000252 430 ... 0 ependencyProperty partagé IsTabStopProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59ce4 <<
047d7404 4000253 434 ... 0 ependencyProperty partagé TabIndexProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59cf8 <<
047d7404 4000254 438 ... 0 ependencyProperty partagé TemplateProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59d20 <<
047d7404 4000255 43c ... ependencyProperty 0 partagée TabNavigationProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59d48 <<
047d7404 4000256 440 ... 0 ependencyProperty partagé PaddingProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59d70 <<
047d7404 4000257 444 ... 0 ependencyProperty partagé HorizontalContentAlignmentProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59d98 <<
047d7404 4000258 448 ... 0 ependencyProperty partagé VerticalContentAlignmentProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59dc0 <<
047d7404 4000259 44c ... ependencyProperty 0 partagée BackgroundProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59de8 <<
047d7404 400025a 450 ... 0 ependencyProperty partagé BorderBrushProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59dfc <<
047d7404 400025b 454 ... 0 ependencyProperty partagé BorderThicknessProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59e10 <<
047d7404 400025c 458 ... 0 ependencyProperty partagé FontSizeProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59e24 <<
047d7404 400025d 45c ... ependencyProperty 0 partagée FontFamilyProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59e4c <<
047d7404 400025e 460 ... 0 ependencyProperty partagé ForegroundProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59e60 <<
047d7404 400025f 464 ... 0 ependencyProperty partagé FontWeightProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59e88 <<
047d7404 4000260 468 ... 0 ependencyProperty partagé FontStyleProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59eb0 <<
047d7404 4000261 46c ... ependencyProperty 0 partagée FontStretchProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59ed8 <<
047d7404 4000262 470 ... 0 ependencyProperty partagé DefaultStyleKeyProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59eec <<
047d7404 4000263 474 ... 0 ependencyProperty partagé IsEnabledProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59f00 <<
04857f14 4000265 478 ... System.Windows]] 0 partagée _resourceDictionaryCache statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5cae4 <<
03cf5668 4000266 47c System.Object [] 0 partagée _controlDelgates statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f59f14 <<
03cf44e8 40002b4 34 System.Object 0 par exemple 00000000 _treeContent
047d7404 40002b3 530 ... 0 ependencyProperty partagé ContentTemplateProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5bd30 <<
047d7404 534 40002b5 ... ependencyProperty 0 partagée ContentProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5bd44 <<
03d50f28 40005aa 40 System.Boolean 1 instance une _isLoaded
03d50f28 40005ab 41 System.Boolean 1 instance une _isMouseCaptured
03d50f28 40005ac 42 System.Boolean une instance 0 _isSpaceKeyDown
03d50f28 40005ad 43 System.Boolean une instance 0 _isMouseLeftButtonDown
04852208 40005ae 48 System.Windows.Point 1 instance 04f5b990 _mousePosition
048b5f98 40005af 38 ... mation.Storyboard 0 par exemple 00000000 _currentState
03d50f28 40005b0 44 System.Boolean une instance 0 _suspendStateChanges
0481fae0 40005b1 3c ... outedEventHandler 0 par exemple 04f5ca18 Cliquez
047d7404 40005a6 7E0 ... ependencyProperty 0 partagée ClickModeProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5ba7c <<
047d7404 40005a7 7E4 ... ependencyProperty 0 partagée IsFocusedProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5bb38 <<
047d7404 40005a8 7E8 ... ependencyProperty 0 partagée IsMouseOverProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5bbd8 <<
047d7404 40005a9 7ec ... ependencyProperty 0 partagée IsPressedProperty statiques
>> Domaine: Valeur 0433c738: NotInit 06f529d8: 04f5bc40 <</ / Dump de terrain Button.Click (9 lignes ci-dessus)
0:005>! Ne 04f5ca18
Nom: System.Windows.RoutedEventHandler
MethodTable: 0481fae0
EEClass: 0482c99c
Taille: 32 (0x20) octets
Fichier: C: \ Program Files \ Microsoft Silverlight \ 2.0.31005.0 \ System.Windows.dll
Domaines:
Champ MT offset type VT Nom de la valeur Attr
03cf44e8 40001e0 4 System.Object 0 par exemple 04f59c78 _target
04663c58 40001e1 8 ... ection.MethodBase 0 par exemple 00000000 _methodBase
03d50a90 40001e2 c System.IntPtr 1 instance 463c08c _methodPtr
03d50a90 40001e3 10 System.IntPtr une instance 0 _methodPtrAux
03cf44e8 40001e4 14 System.Object 0 par exemple 00000000 _invocationList
03d50a90 40001e5 18 System.IntPtr une instance 0 _invocationCount0:005>! Faire-nofields 04f59c78 / / vérifier _target la page
Nom: SilverlightApplication1.Page
MethodTable: 04633a6c
EEClass: 0463196c
Taille: 68 (0x44) octets
Fichier: SilverlightApplication1, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null/ / Vérifier les points d'_methodPtr Button_Click
/ / Voir comment ils sont tous reliés entre eux
0:005> ln 463c08c
(0463c08c) SilverlightApplication1.Page.Button_Click (System.Object, System.Windows.RoutedEventArgs)
0:005 stub de méthode> u 463c08c / / jit-ed
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!








Les commentaires récents