Silverlight depuración con WinDbg y SOS
Introducción
En el post anterior, la depuración de Silverlight con Visual Studio , me demostraron que Visual Studio es una herramienta poderosa y la más conveniente para la depuración de las aplicaciones administradas. Sin embargo, para algunos escenarios de depuración avanzadas, como la pérdida de memoria, un punto muerto, fuera de control de proceso / hilo, la depuración del núcleo, y avanzado mando a distancia / crash / interfaz de usuario, etc depuración, WinDbg (o cdb, NTSD, kd) se prefiere generalmente, si no es la única opción.
Herramientas de depuración para Windows
Información general
WinDbg es parte de las herramientas de depuración para Windows paquete:
A pesar de que WinDbg es un programa de interfaz gráfica de usuario, se utiliza sobre todo como un depurador de línea de comandos como (y, a menudo con) KD, CDB y NTSD, y compartir el motor de depuración misma y los comandos. Es super potente y ampliable, especialmente adecuado para el sistema / depuración de bajo nivel, como los conductores y otros componentes del sistema operativo. Se requiere buen conocimiento del hardware, sistema operativo y el compilador para obtener el máximo provecho de las herramientas. Es un gran (o perfecto, debo decir
para la depuración nativa, con sus comandos extensos y extensible e interfaz gráfica de usuario. Asistencia administrada a través de la depuración es la extensión de depuración de SOS, no es tan buena como la depuración nativa, pero hay un enorme valor en ser capaz de realizar una depuración integrada a través de límite entre administrado y nativo, y para Silverlight, es la única herramienta que soy consciente de que puede cargar SOS y no integrados de depuración.
Comandos
WinDbg / CDB / NTSD / kd han existido por mucho tiempo, por lo que están muy bien documentadas. Es muy recomendable que usted lea acerca de las herramientas de depuración para Windows en microsoft.com y MSDN . Aquí sólo un breve resumen de sus comandos, para darle una sensación y una referencia rápida. Todos los comandos vienen con la ayuda en tiempo de ejecución (a través de |?. Ayuda | ayuda [<cmd>] como veremos más adelante), por lo que una visión general suele ser suficiente para obtener su marcha.
WinDbg tiene tres conjuntos de comandos:
Los comandos estándar
Principalmente:
- B * comandos para configurar / borrar / list / activar / desactivar puntos de interrupción en la dirección o el acceso
- D * comandos para examinar la memoria (pila / heap, local / variables globales y los parámetros), E * El comando para modificar la memoria, y * S para buscar en la memoria
- K * Comandos para examinar la pila de llamadas
- P, T, G * comandos para el control de la ejecución
a continuación? la salida del comando es una gran visión de conjunto y referencia frecuente para las personas que utilizan windbg / CDB / NTSD / kd:
0:006>?
Debugger.chm abierto para la documentación de depurador completo
B [C | D | E] [<bps>] - borrar / activar / desactivar punto de interrupción (s)
BL - Lista de puntos de interrupción
BA <access> <tamaño> <addr> - punto de interrupción del procesador
BP <dirección> - punto de interrupción suave
D [tipo] [<rango>] - volcado de memoria
DT [-N | Y] [[mod] nombre!] [[-N | y] los campos]
[Dirección] [-l lista] [-a [] | c | i | f | r [#] | v] - volcado tipo de uso de la información
DV [NOMBRE] - volcar las variables locales
E [tipo] <dirección> [<valores>] - introduzca los valores de la memoria
G [H | N] [= <dirección> [<dirección> ...]] - ir
K <count> - StackTrace
PK <count> - StackTrace con argumentos de origen
LM [k | l | U | V] - lista de módulos
<expr> LN - símbolos más próximos de la lista
P [= <addr>] [<valor>] - Paso a paso
Q - para dejar de fumar
R [[<reg> [= <expr>]]] - Ver o conjunto de registros
S [<opts>] <rango> <valores> - búsqueda en la memoria
SX [{e | d | i | n} [-c "cmd1"] [-c2 "CMD2"] [-h] {Excepción | Evento | *}] - filtro de eventos
T [= <dirección>] [<expr>] - traza en
U [<rango>] - desensamblar
Versión - programa depurado y la versión del depurador
X [<* |> módulo!] <* | Símbolo> - ver símbolos
? <expr> - la expresión de la pantalla
? <expr> - Display de C + + de expresión
$ << Filename> - tomar la entrada de un archivo de comandosPulse Enter ...
<expr> unario operaciones: + - no por wo DWO qwo poi alta baja
operaciones binarias: + - * / mod (%) y (&) XOR (^) o (|)
comparaciones: == (=) <> =
operandos: número de la corriente radical, símbolo público, <reg>
<tipo>: b (byte), w (palabra), d [s] (doble palabra [con los símbolos]),
un (ASCII), c (dword y Char), u (Unicode), l (lista)
f (float), D (doble), s | S (ASCII / Unicode cadena)
q (quadword)
<patrón>: [! (NT | <dll-name>)] <var-name> (? <var-name> pueden incluir y *)
<rango>: <dirección> <dirección>
: L <dirección> <count>De modo de usuario opciones:
Del ~ - Lista de temas de estado
~ # S - por defecto conjunto de hilos
| - Lista de los procesos de estado
| # S - Establecer como predeterminado el procesoopciones de x86:
Dirección General de <selector> - Selector de volcado
<reg>: [e] hacha, [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>: # <de 16 bits en modo protegido [seg:]> Dirección,
Y <V86-mode [seg:]address>Debugger.chm abierto para la documentación de depurador completo
Comandos Meta
Aquellos con un punto de inicio, sobre todo para la depuración avanzada. Algunos comandos importantes que usted debe saber:
- . Y symfix. Simpatectomía para el uso de servidor de símbolos
- . Y srcfix. Srcpath para el uso de servidor de origen
- . Carga,. Loadby,. Descarga,. Cadena,. Setdll para administrar las extensiones de depuración
- . Servidor. Remota para la depuración remota
Es bien vale la pena su tiempo para familiarizarme con el servidor de símbolos, servidor de origen y la depuración remota: se le hará la vida mucho más fácil. abajo es la salida de comando ayudar.:
0:006>. Ayuda
. comandos:
. Abandonar - abandonar el proceso actual
Allow_exec_cmds. [0 | 1] - comandos de control de ejecución
. Allow_image_mapping [0 | 1] - de control en la demanda de asignación de archivo de imagen
. Apply_dbp [<opciones>] - añadir el estado actual de datos a un punto de interrupción
registro de contexto
Asm. [<opciones>] - Establecer las opciones de desmontaje
Asm-. [] - <opciones> Opciones claras de desmontaje
. Conectar <proc> - adjuntar a <proc> en la ejecución de al lado
. Bloque {} <commands> - soportes de un conjunto de comandos para la ejecución anidada
. Bpsync [0 | 1] - el comportamiento de punto de interrupción especial para debuggees multiproceso
. Descanso - romper el lazo que encierra
. Rodaje - rotura en KD
. Caché [<opciones>] - la memoria virtual de control de caché
. Llamada Fn (<arg1>, <arg2>, ...) - ejecutar una función en la depuración
. Catch {} - <commands> captura fallas en los comandos
. Cadena - Lista de extensiones actuales
. Childdbg <0 | 1> - proceso hijo a su vez la depuración de encendido o apagado
. Clientes: clientes de la lista actualmente activos
. CloseHandle [<opciones>] [<handle>] - cerca de la manija dada
. Siga - siga el bucle que encierra
Copysym. [<opciones>] <path> - Copiar los archivos de símbolos actual a un directorio
. Crear <línea - crear un nuevo proceso
. CreateDir [<opciones>] [<path>] - opciones de control del proceso de creación de
. <dirección> Cxr - volcado de registro de contexto en la dirección especificada
* k da después de esta pila de RX de tórax
. Dbgdbg - adjuntar un depurador al depurador actual
. Debug_sw_wow [0 | 1] - permitir la interacción con software de emulación de WOW
. Separar - se desprenden de la actual proceso / descarga
. Dml_file <archivo> - la salida de contenido de un archivo LMD
. Dml_flow <addr> <inicio> - show bloque básico flujo de código
Dml_start. [<opciones>] - Panorama general navegable del depurador de las actividades
. Do {} <commands> (<cond>) - ejecutar <commands> hasta <cond> es cero
Los conductores - Este comando se retiró -. Uso 'lm' o recarga-l)
. Volcado [<opciones>] <filename> - crear un archivo de volcado en el sistema host
. Dvalloc [<opciones>] <bytes> - VirtualAlloc de memoria en el código depurado
. Dvfree [<opciones>] <Desplazamiento> <bytes> - VirtualFree de memoria en el código depurado
. Echo ["<cadena>" | <cadena>] - repite cadena
. Echotime - Tiempo de salida de un depurador
Echotimestamps. [0 | 1] - Salida de indicación de la hora de alternar en eventos
. Ecxr - volcado de registro de contexto para la excepción actual
. Effmach [<equipo>] - cambiar el tipo actual de la máquina
.} Else {<commands> - if / then / else ejecución condicional
. Elsif (<cond>) {} <commands> [<else clauses>] - if / then / else condicional
ejecución
Enable_long_status. [0 | 1] - descarga los tipos LONG en la base por defecto
Enable_unicode. [0 | 1] - descarga de la matriz USHORT / punteros y cadenas Unicode
. Endsrv <id> - deshabilitar el servidor de motor dada
. Endpsrv - hacer que el servidor remoto de la sesión actual para salir
. Enumtag - enumerar los datos disponibles con etiqueta
. Event_code - instrucciones de la pantalla en caché de eventos
. Registro de eventos - pantalla de registro de los acontecimientos recientes
- Los eventos de mostrar y seleccionar los eventos disponibles
. Eventstr - ver todas las cadenas de eventos registrados por depuración
. ExePath [<dir> [, ...]] - ejecutable conjunto de ruta de búsqueda
. ExePath + [<dir> [, ...]] - append ejecutable de la ruta de búsqueda
. Expr - control de la expresión evaluador
. Exptr <dirección> -. Hacer exr y radiografía de tórax para EXCEPTION_POINTERS.
. <dirección> Exr - volcado de registro de excepción en la dirección especificada
. Extmatch [<opts>] <pattern> - ver todas las extensiones que concuerden con patron
. Extpath <opts> [<dir> [, ...]] - extensión de la ruta de búsqueda conjunto
. Extpath + <opts> [<dir> [, ...]] - append ampliación de la ruta de búsqueda
. F + - conjunto de marco de pila actual de llamadas del marco actual
. F - conjunto de marcos de pila actual al destinatario de la llamada del marco actual
. <dirección> De fibra - establece el contexto de la fibra en la dirección
restablece el contexto si no se especifica la dirección
. Fiximports <pattern> - los intentos de vincular las importaciones para las imágenes
. <dirección> Fnent - volcado de entrada de la función para la dirección de código dado
. Fnret <fnaddr> [<retval>] - indicación del valor de retorno de formato
. Para (<init>; <cond>; <step>) {} <commands> - ejecutar y <commands>
<step> hasta <cond> es
cero
Force_radix_output. [0 | 1] - tipos de volcado de enteros en base por defecto
. Force_system_init [<opciones>] - sistemas de fuerzas en espera para iniciar, si es posible
. Force_tb - la fuerza permitir que la rama de seguimiento
. Foreach [opta] (<alias> {} <tcmds>) {} <ecmds> - ejecutar <ecmds> de
cada ficha en el
salida de <tcmds>
. <opciones> FPO - control de anulación FPO información
. Marco [<frame>] - conjunto de marcos de pila actual para los locales
. Formatos <expr> - resultado muestra la expresión en muchos formatos
. Ayuda [<opciones>] - muestra esta ayuda
. Holdmem <opciones> [rango] - poseer y comparar los datos de la memoria
. If (<cond>) {} <commands> [<else clauses>] - if / then / else condicional
ejecución
. Ignore_missing_pages [0 | 1] - núcleo de control del vertedero de resumen de falta
página de mensaje de error
. Imgscan <opciones> - exploración de la memoria para las imágenes de PE
. Jdinfo <jdi_addr> - interpretar la información AeDebug
. Kframes <count> - ajuste predeterminado de pila profunda huella
. Mata - mata el proceso actual
. Lastevent - muestra el último evento que tuvo lugar
. Deja - salir de la envolvente captura.
Líneas de carga -. Alternar símbolo de línea
NOMBRE. De carga - añadir este archivo DLL de extensión de la cadena de extensión
. Loadby <name> <mod> - agregar el archivo DLL de extensión en el módulo
directorio a la cadena de extensión
. Local [<locale>] - establece la localización actual
. Archivo de registro - registro de indicación de estado
. Logopen [<archivo>] - abrir el archivo de registro nuevo
. Logappend [<archivo>] - agregar al archivo de registro
. Logclose - archivo de registro de cerca de
Netsyms. [0 | 1] - Permitir / no permitir rutas de símbolo NET
. Netuse [<opciones>] - gestionar conexiones de red
. Noshell - deshabilitar los comandos de shell
. Noversion - desactivar la comprobación de la versión de extensión
. Ofilter <pattern> - filtro de salida depurado con el patrón dado
. Ocommand <prefix> - Salida de tratamiento con el prefijo dado como un comando
. <archivo> Opendump - abrir un archivo de volcado
. <máscara> Outmask - conjunto de bits de la máscara de la corriente de salida
. Outmask-<máscara> - Borrar los bits de la máscara de la corriente de salida
. PCMD [<opciones>] - Control por símbolo del sistema
Ventana emergente. [<opciones>] - Pop Estado
. Prefer_dml [0 | 1] - el control de LMD por defecto el modo de
. Printf "<format>", <args…> - salida con formato
. Proceso [<dirección>] - establece proceso implícito
restablece por defecto si no se especifica la dirección
. Prompt_allow [<opciones>] - el control de qué información se puede mostrar
en el indicador de
. Pulse [<opciones>] - Estado de empuje
. Quit_lock [<opciones>] - Cierra la sesión contra la salida inesperada
. Readmem <archivo> <rango> - leer la memoria prima a partir de un archivo
. Record_branches [0 | 1] - los controles de grabación de procesador de ramificación
. De recarga [<image.ext> [= <dirección>, <tamaño>]] - símbolos de recarga
. Reiniciar - solicitar una sesión de reiniciar
. A distancia <pipename> - inicio del servidor remote.exe
. Seguro [0 | 1] - no permitir las operaciones de peligroso para el anfitrión
. Send_file <opciones> - enviar archivos a un servidor remoto
. <opciones> Servidor - el servidor de arranque del motor
Los servidores - servidores de listas activas de interacción remota
. Setdll <name> - depurador buscará extensiones de este archivo DLL primero
. Shell [<command>] - ejecutar comandos de shell
. Show_read_failures [<opts>] - control de lectura adicional de salida de error
. Show_sym_failures [<opts>] - Control de símbolo extra de salida de error
. Sueño <milliseconds> - depurador duerme por duración determinada
útil para permitir el acceso a una máquina que es
roto en un sobre NTSD-d
. Srcfix [<ruta extra>] - fuente de corrección de la ruta de búsqueda
. Srcfix + [<ruta extra>] - append fuente fija la ruta de búsqueda
. Srcnoisy [0 | 1] - control de código fuente detallado de salida de carga
. Srcpath [<dir> [, ...]] - fuente de la ruta de búsqueda conjunto
. Srcpath + [<dir> [, ...]] - fuente de la ruta de búsqueda de datos anexados
Step_filter. [<opts>] ["<pattern> [; <pattern> ...]"] - Los patrones de juego de símbolos
para saltar al caminar
. Symfix [<localsym>] - símbolo de corrección de la ruta de búsqueda
. Symfix + [<localsym>] - append símbolo fija la ruta de búsqueda
. Symopt <flags> - opciones de juego de símbolos
. Symopt + <flags> - opciones de juego de símbolos
. Symopt-<flags> - opciones claras de símbolos
. Simpatectomía [<dir> [, ...]] - símbolo de conjunto de la ruta de búsqueda
. Simpatectomía + [<dir> [, ...]] - append símbolo de la ruta de búsqueda
. Hilo [<dirección>] - Establece el contexto de la rosca en la dirección
restablece el contexto predeterminado si no se especifica la dirección
. Tiempo - muestra la información de tiempo de la sesión
. TTIME - muestra información de Tema
. Tlist - lista de procesos en ejecución
. Typeopt <flags> - set / opciones de tipo de claras
. Descargar <name> - eliminar esta DLL de las extensiones de la lista de archivos DLL de extensión
. Unloadall - eliminar todos los archivos DLL de extensión de la lista de archivos DLL de las extensiones
. Estela - despierta un depurador sleep'ing.
. Al mismo tiempo (<cond>) {} <commands> - ejecutar al mismo tiempo <commands> <cond> no es cero
. <archivo> <rango> Writemem - escribir en la memoria en bruto a un archivoUse ". <command> Hh", o Debugger.chm abierto en el directorio de depuradores para obtener
documentación detallada sobre un comando.
Comandos de extensión
Los empezar!, Por lo general de un área en particular, al igual que los comandos de extensión de SOS para la depuración administrada. Usted puede usar! <ext>. Ayudar a una lista de comandos de extensión, al igual! Exts.help. Para la depuración avanzada del sistema, como la detección de pérdida de memoria, etc callejón sin salida, tienes que estar muy familiarizado con los comandos de extensión.
SOS
Información general
SOS es el acrónimo de Son of Strike (no me pregunten por qué), una extensión de depuración para la depuración administrada. Creo que fue inventado por el equipo de CLR para la depuración de CLR, por lo que ha existido desde hace mucho tiempo, y hay un montón de buena información en la web. Algunas lecturas recomendadas:
- SOS extensión de depuración en MSDN
- Después de Jason Zander blog: SOS depuración de CLR
Cada versión de CLR tiene su propio SOS (NET Framework 3.5 sigue utilizando CLR 2.0, y Silverlight tiene su propio CLR.):
Directorio de C: \ Archivos de programa \ herramientas de depuración para Windows \ clr10
19/09/2007 19:01 948784 sos.dll
1 Archivo (s) 948,784 bytesDirectorio de C: \ Archivos de programa \ Microsoft Silverlight \ 2.0.31005.0
10/05/2008 02:16 AM 495424 sos.dll
1 Archivo (s) 495,424 bytesDirectorio de C: \ Windows \ Microsoft.NET \ Framework \ v1.1.4322
07/15/2004 12:35 AM 319488 SOS.dll
1 Archivo (s) 319,488 bytesDirectorio de C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727
07/27/2008 10:03 392184 SOS.dll
1 Archivo (s) 392,184 bytes
Comandos
SOS Ayuda tiempo de ejecución es tan grande que casi no es necesario ningún documento distinto de un intento unos pocos y el error y la frustración alguna ![]()
0:016>! Ayuda
---------------------------
SOS es un archivo DLL de extensión de depurador diseñado para ayudar en la depuración de gestión
programas. Las funciones están agrupados por categorías, a continuación, más o menos en orden de
importancia. Nombres de acceso directo para funciones populares se enumeran entre paréntesis.
Tipo "! Ayuda <nombreFunción>" para obtener información detallada sobre esta función.De código objeto de examen y de Inspección de las pilas
--------------------
DumpObj (hacer) Temas
DumpArray (bis) clrstack
DumpStackObjects (DSO) IP2MD
Dumpheap U
DumpVC dumpstack
Gcroot EEStack
ObjSize gcinfo
FinalizeQueue EHInfo
PrintException (PE) COMState
TraverseHeap BPMDAl examinar las estructuras de datos de CLR Utilidades de diagnóstico
--------------------
DumpDomain verifyheap
EEHeap VerifyObj
Name2EE FindRoots
SyncBlk HeapStat
DumpMT GCWhere
DumpClass ListNearObj (LNO)
GCHandles DumpMD
Token2EE GCHandleLeaks
EEVersion FinalizeQueue (FQ)
DumpModule FindAppDomain
ThreadPool SaveModule
DumpAssembly Procinfo
DumpSigElem StopOnException (SOE)
DumpRuntimeTypes DumpLog
DumpSig VMMap
RCWCleanupList vmstat
DumpIL MinidumpMode
AnalyzeOOM (AO)Examinando la historia Otro GC
--------------------
HistInit Preguntas frecuentes
HistStats
HistRoot
HistObj
HistObjFind
HistClear
Ejemplo de demostración de depuración
Voy a utilizar la misma simple aplicación de Silverlight en el post anterior ( depuración de Silverlight con Visual Studio ) para demostrar WinDbg depuración de SOS:
Aquí está el registro de depuración con mis anotaciones (empezar con / /):
/ / Establecer una ruta de símbolo a utilizar servidor de símbolos
0:013>. Simpatectomía
Símbolo ruta de búsqueda es: <empty>
0:013> symfix C: \ Users \ ningz \ AppData \ Local \ Temp \ Símbolos
0:013>. Simpatectomía
Símbolo ruta de búsqueda es el siguiente: SRV * c: \ Users \ ningz \ AppData \ Local \ Temp \ Symbols \ * \ \ símbolos símbolos/ / Agregar la ruta anteproyecto de presupuesto para la aplicación que se está depurando
0:013> Simpatectomía +. "C: \ Users \ \ ningz documentos \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ SilverlightApplication1 \ bin \ Debug"
Símbolo ruta de búsqueda es: SRV * c: \ Users \ ningz \ AppData \ Local \ Temp \ * Símbolos
http://msdl.microsoft.com/download/symbols;
C: \ Users \ ningz \ Documents \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ Bin SilverlightApplication1 \ \ Debug/ / Cargar todos los símbolos
0:013>. De recarga
Recarga de los módulos actuales
/ / Establecer una ruta de origen para usar el servidor de origen
0:013>. Srcpath
Camino de búsqueda de código es: <empty>
0:013>. Srcfix
Camino de búsqueda de código es el siguiente: SRV *
0:013> srcpath +. "C: \ Users \ \ ningz documentos \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ SilverlightApplication1"
Camino de búsqueda de código es el siguiente: SRV * c: \ Users \ \ ningz documentos \ Visual Studio 2008 \ Projects \ SilverlightApplication1 \ SilverlightApplication1/ / Cargar SOS. Tenga en cuenta:
/ / 1. parece mscorwks se sustituye por coreclr en Silverlight
/ / 2. . lugar de loadby, también puede utilizar la carga. "C: \ Archivos de programa \ Microsoft Silverlight \ 2.0.31005.0 \ sos.dll"
0:013>. Loadby sos coreclr
Cargado C: \ Archivos de programa \ Microsoft Silverlight \ 2.0.31005.0 \ sos de extensión DLL/ / Establecer un punto de interrupción para el controlador de eventos de botón haga clic en
0:013>! Bpmd SilverlightApplication1 SilverlightApplication1.Page.Button_Click
Se han encontrado 1 métodos ...
MethodDesc = 03983a30
Adición de puntos de interrupción en espera de ...
0:013> bl
0 e 0428215b 0001 (0001) 0: ****
0:013> g
Modload: 70800000 7080c000 C: Windowssystem32dwmapi.dll/ / Haga clic en el botón y se rompen en windbg
Punto de interrupción 0 hit
*** ADVERTENCIA: No se puede verificar suma de comprobación para SilverlightApplication1.dll
! SilverlightApplication1 Button_Click:
04850398 55 push ebp
Depuración integrada de gestión no es compatible con la enumeración de las variables locales.
Ver http://dbg/managed.htm para más detalles.
Gestionado marco de procesamiento no, HRESULT 0x80004005/ / Compare! Hilos y de salida * ~
0:005>! Hilos / / Lista subprocesos administrados sólo
Threadcount: 3
UnstartedThread: 0
BackgroundThread: 3
PendingThread: 0
DeadThread: 0
Hosted Duración: sí
PreEmptive GC Alloc bloqueo
Identificación OSID ThreadOBJ Estado del dominio del contexto GC Conde Excepción APT
5 1 1b08 043576e0 220 personas de movilidad reducida 04f9f214: 04f9ffe8 06f529d8 0 STA
9 2 928 043689c8 B220 habilitado 00000000:00000000 0433c738 0 MTA (Finalizer)
10 3 1220 1e8c 06f509d0 Activado 00000000:00000000 0433c738 0 Ukn
0:005> ~ * / / lista de todos los temas
0 ID: 162c.1a28 de suspensión: 1 Teb: 7ffde000 descongelado
Inicio: iexplore wWinMainCRTStartup (00a52d79)
Prioridad: 0 Clase de prioridad: 32 Afinidad: 3
2 ID: 162c.1020 suspensión: 1 Teb: sin congelar 7ffdc000
Inicio: ole32 CRpcThreadCache :: RpcWorkerThreadEntry (76dfe0cc)
Prioridad: 0 Clase de prioridad: 32 Afinidad: 3
3 Id: 162c.1e00 de suspensión: 1 Teb: sin congelar 7ffda000
Inicio: ntdll TppWaiterpThread (778ab61b)
Prioridad: 0 Clase de prioridad: 32 Afinidad: 3
4 ID: 162c.1f00 de suspensión: 1 Teb: 7ffd9000 descongelado
Inicio: msvcrt _endthreadex 0 x6f (76162da8)
Prioridad: 0 Clase de prioridad: 32 Afinidad: 3
. 5 ID: 162c.1b08 suspensión: 1 Teb: 7ffd8000 descongelado
Inicio: IEFRAME CTabWindow :: _TabWindowThreadProc (6c163fdb)
Prioridad: 0 Clase de prioridad: 32 Afinidad: 3
7 Id: 162c.170 de suspensión: 1 Teb: 7ffd6000 descongelado
Inicio: npctrl CXcpDispatcher :: DispatcherTimerCallback (6a6d16f4)
Prioridad: 0 Clase de prioridad: 32 Afinidad: 3
8 Id: 162c.1cd0 suspensión: 1 Teb: sin congelar 7ffd5000
Inicio: coreclr DebuggerRCThread :: ThreadProcStatic (640eb5cd)
Prioridad: 0 Clase de prioridad: 32 Afinidad: 3
9 Id: 162c.928 de suspensión: 1 Teb: sin congelar 7ffd4000
Inicio: coreclr Thread :: intermediateThreadProc (63fb8e4f)
Prioridad: 0 Clase de prioridad: 32 Afinidad: 3
10 Id: Suspender 162c.1e8c: 1 Teb: 7ffd3000 descongelado
Inicio: coreclr Thread :: intermediateThreadProc (63fb8e4f)
Prioridad: 0 Clase de prioridad: 32 Afinidad: 3
11 Id: Suspender 162c.1fac: 1 Teb: 7ffaf000 descongelado
Inicio: agcore CMulticoreTaskScheduler :: WorkerThread (660547de)
Prioridad: 0 Clase de prioridad: 32 Afinidad: 3
12 Id: 162c.1b78 de suspensión: 1 Teb: 7ffae000 descongelado
Inicio: agcore CMulticoreTaskScheduler :: WorkerThread (660547de)
Prioridad: 0 Clase de prioridad: 32 Afinidad: 3
13 Id: 162c.1d18 de suspensión: 1 Teb: 7ffdb000 descongelado
Inicio: ntdll RtlUserThreadStart (778c9a78)
Prioridad: 0 Clase de prioridad: 32 Afinidad: 3
Gestionado marco de procesamiento no, HRESULT 0x80004005
Depuración integrada de gestión no es compatible con la enumeración de las variables locales.
Ver http://dbg/managed.htm para más detalles./ / Compare! De salida clrstack & k
0:005>! Clrstack-p / / lista de marcos de pila sólo se logró
OS Tema ID: 0x1b08 (5)
ESP EIP
0450f850 04800398 SilverlightApplication1.Page.Button_Click (System.Object, System.Windows.RoutedEventArgs)
PARÁMETROS:
esto (<CLR reg>) = 0x04f59c78
remitente (<CLR reg>) = 0x04f5b948
e (0x0450f854) = 0x04f9f1f00450f858 048cde0d System.Windows.Controls.Primitives.ButtonBase.OnClick ()
PARÁMETROS:
esto (0x0450f864) = 0x04f5b9480450f870 048cdd10 System.Windows.Controls.Button.OnClick ()
PARÁMETROS:
este = <sin <datos0450f880 048cdc3d
PARÁMETROS:
esto (0x0450f884) = 0x04f5b948
e (0x0450f880) = 0x04f9f1880450f890 048cdba1 System.Windows.Controls.Control.OnMouseLeftButtonUp (System.Windows.Controls.Control, System.EventArgs)
PARÁMETROS:
ctrl = <sin <datos
e = <sin <datos0450f8a0 0483a0e7 MS.Internal.JoltHelper.FireEvent (IntPtr, IntPtr, Int32, System.String)
PARÁMETROS:
unmanagedObj (0x0450f8f8) = 0x04355c48
unmanagedObjArgs (0x0450f8f4) = 0x0707be00
argsTypeIndex (0x0450f928) = 0x000000a9
eventName (0x0450f924) = 0x04f9f16c0450fa74 63ef17b0 [GCFrame: 0450fa74]
0450fb30 [ContextTransitionFrame: 0450fb30] 63ef17b0
0450fc28 63ef17b0 [UMThkCallFrame: 0450fc28]
0:005> KP / / lista de todos los marcos de pila
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
ADVERTENCIA: IP no marco en cualquier módulo conocido. Cuadros siguientes puede estar equivocado.
0450fc10 6607e0db 0x4c513d2
0450fc70 6a6dc1fc agcore! CCoreServices :: CLR_FireEvent 0 x183
Gestionado marco de procesamiento no, HRESULT 0x80004005
0450fc84 npctrl 6a6dc187! CommonBrowserHost :: CLR_FireEvent 0 X2A
0450fcc8 6a6dc048 npctrl! CControlBase :: ScriptCallback 0 x366
0450fd08 6a6dc013 npctrl! CXcpDispatcher :: OnScriptCallback 0 Xee
0450fd14 npctrl 6a6dbfef! CXcpDispatcher :: OnWindowMessage 0 X3A
0450fd2c 7731f8d2 npctrl! CXcpDispatcher :: WindowProc 0 x7f
0450fd58 7731f794 USER32! InternalCallWinProc 0 x23
0450fdd0 77320008 USER32! UserCallWinProcCheckWow 0 x14b/ / Examinar montón, tenga en cuenta la conveniencia de pila de fuertes objeto escrito,
/ / En lugar de un-mecanografiadas bytes como en el montón nativo
0:005>! Dumpheap tipo SilverlightApplication1
Dirección de Tamaño MT
04f4f31c 046336b0 36
04f59c78 04633a6c 68
total de 2 objetos
Estadísticas:
MT TotalSize Conde Nombre de clase
046336b0 1 36 SilverlightApplication1.App
04633a6c 1 68 SilverlightApplication1.Page
Total de 2 objetos
0:005>! Hacer 04f59c78
Nombre: SilverlightApplication1.Page
MethodTable: 04633a6c
EEClass: 0463196c
Tamaño: 68 (0x44) bytes
Archivo: Versión SilverlightApplication1, = 1.0.0.0, Culture = neutral, PublicKeyToken = null
Campos:
MT campo de tipo offset VT Nombre de valor Attr
047d97a0 40000dc 4 ... al.NativeResource 0 instancia 04f5a5c0 m_nativePtr
04853ab8 40000df 8 ... System.Windows]] 0 instancia 00000000 _valueTable
047d9874 40000e0 c ... 0 reTypeEventHelper ejemplo 04f5a600 _coreTypeEventHelper
04856388 40000e3 10 ... bject, mscorlib]] 0 instancia 04f79a58 _treeChildren
047ae03c 40000e4 14 ... 0 rnal.IManagedPeer ejemplo 00000000 _treeParent
03d50a90 40000dd 2B0 System.IntPtr una compartida StaticNativePointer estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 00000000 <<
03d50f28 40000de 2B4 System.Boolean un _isCoreCreate estática compartida
Dominio >>: Valor 0433c738: NotInit 06f529d8: 0 <<
047ae384 40000e1 8 .... DependencyObject 0 compartida PropertyReferencesHolder estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f489b8 <<
04661618 40000e2 c ... flection.Assembly 0 estática compartida _executingAssembly
Dominio >>: Valor 0433c738: NotInit 06f529d8: 00000000 <<
047d0b90 40000f1 18 ... 0 rs.AutomationPeer ejemplo 00000000 m_pAP
047d7404 40000e8 10 ... ependencyProperty 0 compartida OpacityProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a4a8 <<
047d7404 40000e9 14 ... ependencyProperty 0 compartida ClipProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a4d0 <<
047d7404 40000ea 18 ... ependencyProperty 0 compartida RenderTransformProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a4f8 <<
047d7404 40000eb 1c ... ependencyProperty 0 compartida OpacityMaskProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a50c <<
047d7404 40000ec 20 ... ependencyProperty 0 compartida RenderTransformOriginProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a534 <<
047d7404 40000ed 24 ... ependencyProperty 0 compartida IsHitTestVisibleProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a548 <<
047d7404 40000ee 28 ... ependencyProperty 0 compartida VisibilityProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a570 <<
047d7404 40000ef 2c ... ependencyProperty 0 compartida RenderSizeProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a598 <<
047d7404 40000f0 30 ... ependencyProperty 0 compartida UseLayoutRoundingProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a5ac <<
00000000 4000108 00000000 1c 0 instancia BindingValidationError
04856ae4 400010a 20 ... 0 angedEventHandler ejemplo 00000000 DPChanged
048bc8a4 400010b 24 ... 0 angedEventHandler ejemplo 00000000 DataContextChanged
03d50f28 400010c 2c System.Boolean una instancia 0 _isDataContextBound
0481f43c 400010d 28 ... 0 angedEventHandler ejemplo 00000000 _sizeChanged
047d7404 40000f2 34 ... ependencyProperty 0 compartida TriggersProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a144 <<
047d7404 40000f3 38 ... ependencyProperty 0 compartida ResourcesProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a158 <<
047d7404 40000f4 3c ... ependencyProperty 0 compartida LanguageProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a180 <<
047d7404 40000f5 40 ... ependencyProperty 0 compartida ActualWidthProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a194 <<
047d7404 40000f6 44 ... ependencyProperty 0 compartida ActualHeightProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a1a8 <<
047d7404 40000f7 48 ... ependencyProperty 0 compartida WidthProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a1bc <<
047d7404 40000f8 4c ... ependencyProperty 0 compartida HeightProperty estática
Dominio >>: Valor 0433c738: NotInit 06f529d8: 04f5a1d0 <<
047d7404 40000f9 50 ...ependencyProperty 0 shared static MinWidthProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1e4 <<
047d7404 40000fa 54 ...ependencyProperty 0 shared static MaxWidthProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1f8 <<
047d7404 40000fb 58 ...ependencyProperty 0 shared static MinHeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a20c <<
047d7404 40000fc 5c ...ependencyProperty 0 shared static MaxHeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a220 <<
047d7404 40000fd 60 ...ependencyProperty 0 shared static HorizontalAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a234 <<
047d7404 40000fe 64 ...ependencyProperty 0 shared static VerticalAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a248 <<
047d7404 40000ff 68 ...ependencyProperty 0 shared static MarginProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a25c <<
047d7404 4000100 6c ...ependencyProperty 0 shared static StyleProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a284 <<
047d7404 4000101 70 ...ependencyProperty 0 shared static ParentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2ac <<
047d7404 4000102 74 ...ependencyProperty 0 shared static NameProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2c0 <<
047d7404 4000103 78 ...ependencyProperty 0 shared static TagProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2d4 <<
047d7404 4000104 7c ...ependencyProperty 0 shared static TagInternalProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2fc <<
04851464 4000105 80 ...ndows.RoutedEvent 0 shared static LoadedEvent
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a420 <<
047d7404 4000106 84 ...ependencyProperty 0 shared static CursorProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a440 <<
047d7404 4000107 88 ...ependencyProperty 0 shared static InstanceDelegateStoreProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a468 <<
047d7404 4000109 8c ...ependencyProperty 0 shared static DataContextProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a494 <<
047a1e2c 400010e 90 ...rence, mscorlib]] 0 shared static _staticDelegateList
>> Domain:Value 0433c738:NotInit 06f529d8:00000000 <<
00000000 4000264 30 ...angedEventHandler 0 instance 00000000 IsEnabledChanged
047d7404 4000252 430 ...ependencyProperty 0 shared static IsTabStopProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59ce4 <<
047d7404 4000253 434 ...ependencyProperty 0 shared static TabIndexProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59cf8 <<
047d7404 4000254 438 ...ependencyProperty 0 shared static TemplateProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d20 <<
047d7404 4000255 43c ...ependencyProperty 0 shared static TabNavigationProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d48 <<
047d7404 4000256 440 ...ependencyProperty 0 shared static PaddingProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d70 <<
047d7404 4000257 444 ...ependencyProperty 0 shared static HorizontalContentAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d98 <<
047d7404 4000258 448 ...ependencyProperty 0 shared static VerticalContentAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59dc0 <<
047d7404 4000259 44c ...ependencyProperty 0 shared static BackgroundProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59de8 <<
047d7404 400025a 450 ...ependencyProperty 0 shared static BorderBrushProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59dfc <<
047d7404 400025b 454 ...ependencyProperty 0 shared static BorderThicknessProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e10 <<
047d7404 400025c 458 ...ependencyProperty 0 shared static FontSizeProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e24 <<
047d7404 400025d 45c ...ependencyProperty 0 shared static FontFamilyProperty
>> Domain:Value 0433c738:NotInit 06f529d8: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 <<
047d7404 4000501 77c ...ependencyProperty 0 shared static ContentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59cd0 <<
04852580 4000002 34 ...ows.Controls.Grid 0 instance 04f79770 LayoutRoot
04852a10 4000003 38 ...s.Controls.Button 0 instance 04f5b948 button
03d50f28 4000004 3c System.Boolean 1 instance 1 _contentLoaded// two lines above is the button object of the page object
// remember its address 04f5b948 , since we will refer to it later
// we can get the same address for the button object via dumpheap command:
0:005> !dumpheap -mt 04852a10
Address MT Size
04f5b948 04852a10 92
total 1 objects
Estadísticas:
MT Count TotalSize Class Name
04852a10 1 92 System.Windows.Controls.Button
Total 1 objects
0:005> !gcwhere 04f5b948 // button is in gen0, since there is no GC yet
Address Gen Heap segment begin allocated size
04f5b948 0 0 04f40000 04f41000 04f9fff4 0x5c(92)
0:005> !gcroot 04f5b948 // see who's holding reference to the button object
Note: Roots found on stacks may be false positives. Run "!help gcroot" for
más información.
// registry references
ecx:Root: 04f59c78(SilverlightApplication1.Page)->
04f5b948(System.Windows.Controls.Button)->
edx:Root: 04f5b948(System.Windows.Controls.Button)->
// stack references
Scan Thread 5 OSTHread 1b08
ESP:450f860:Root: 04f5ca18(System.Windows.RoutedEventHandler)->
04f59c78(SilverlightApplication1.Page)->
04f5b948(System.Windows.Controls.Button)->
ESP:450f864:Root: 04f5b948(System.Windows.Controls.Button)->
ESP:450f874:Root: 04f5b948(System.Windows.Controls.Button)->
ESP:450f884:Root: 04f5b948(System.Windows.Controls.Button)->
ESP:450f894:Root: 04f5b948(System.Windows.Controls.Button)->
ESP:450f8d4:Root: 04f5b948(System.Windows.Controls.Button)->
ESP:450f8e4:Root: 04f5b948(System.Windows.Controls.Button)->
Scan Thread 9 OSTHread 928
Scan Thread 10 OSTHread 1e8c
// domain references
DOMAIN(06F529D8):HANDLE(Pinned):46412f8:Root: 05f44260(System.Object[])->
04f45234(System.Collections.Generic.List`1[[System.Object, mscorlib]])->
04f59980(System.Object[])->
04f59c78(SilverlightApplication1.Page)->
04f5b948(System.Windows.Controls.Button)->
Managed frame processing failed, HRESULT 0x80004005
Integrated managed debugging does not support enumeration of local variables.
See http://dbg/managed.htm for more details./ / Botón de examinar el objeto en sí
0:005>! Hacer 04f5b948
Name: System.Windows.Controls.Button
MethodTable: 04852a10
EEClass: 0482e5f0
Size: 92(0x5c) bytes
File: c:\Program Files\Microsoft Silverlight\2.0.31005.0\System.Windows.dll
Campos:
MT Field Offset Type VT Attr Value Name
047d97a0 40000dc 4 ...al.NativeResource 0 instance 04f5bd58 m_nativePtr
04853ab8 40000df 8 ... System.Windows]] 0 instance 04f5c0bc _valueTable
047d9874 40000e0 c ...reTypeEventHelper 0 instance 04f5bd88 _coreTypeEventHelper
04856388 40000e3 10 ...bject, mscorlib]] 0 instance 04f5bee8 _treeChildren
047ae03c 40000e4 14 ...rnal.IManagedPeer 0 instance 04f79770 _treeParent
03d50a90 40000dd 2b0 System.IntPtr 1 shared static StaticNativePointer
>> Domain:Value 0433c738:NotInit 06f529d8:00000000 <<
03d50f28 40000de 2b4 System.Boolean 1 shared static _isCoreCreate
>> Domain:Value 0433c738:NotInit 06f529d8:0 <<
047ae384 40000e1 8 ....DependencyObject 0 shared static PropertyReferencesHolder
>> Domain:Value 0433c738:NotInit 06f529d8:04f489b8 <<
04661618 40000e2 c ...flection.Assembly 0 shared static _executingAssembly
>> Domain:Value 0433c738:NotInit 06f529d8:00000000 <<
047d0b90 40000f1 18 ...rs.AutomationPeer 0 instance 00000000 m_pAP
047d7404 40000e8 10 ...ependencyProperty 0 shared static OpacityProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a4a8 <<
047d7404 40000e9 14 ...ependencyProperty 0 shared static ClipProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a4d0 <<
047d7404 40000ea 18 ...ependencyProperty 0 shared static RenderTransformProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a4f8 <<
047d7404 40000eb 1c ...ependencyProperty 0 shared static OpacityMaskProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a50c <<
047d7404 40000ec 20 ...ependencyProperty 0 shared static RenderTransformOriginProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a534 <<
047d7404 40000ed 24 ...ependencyProperty 0 shared static IsHitTestVisibleProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a548 <<
047d7404 40000ee 28 ...ependencyProperty 0 shared static VisibilityProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a570 <<
047d7404 40000ef 2c ...ependencyProperty 0 shared static RenderSizeProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a598 <<
047d7404 40000f0 30 ...ependencyProperty 0 shared static UseLayoutRoundingProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a5ac <<
00000000 4000108 1c 0 instance 00000000 BindingValidationError
04856ae4 400010a 20 ...angedEventHandler 0 instance 00000000 DPChanged
048bc8a4 400010b 24 ...angedEventHandler 0 instance 00000000 DataContextChanged
03d50f28 400010c 2c System.Boolean 1 instance 0 _isDataContextBound
0481f43c 400010d 28 ...angedEventHandler 0 instance 00000000 _sizeChanged
047d7404 40000f2 34 ...ependencyProperty 0 shared static TriggersProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a144 <<
047d7404 40000f3 38 ...ependencyProperty 0 shared static ResourcesProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a158 <<
047d7404 40000f4 3c ...ependencyProperty 0 shared static LanguageProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a180 <<
047d7404 40000f5 40 ...ependencyProperty 0 shared static ActualWidthProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a194 <<
047d7404 40000f6 44 ...ependencyProperty 0 shared static ActualHeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1a8 <<
047d7404 40000f7 48 ...ependencyProperty 0 shared static WidthProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1bc <<
047d7404 40000f8 4c ...ependencyProperty 0 shared static HeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1d0 <<
047d7404 40000f9 50 ...ependencyProperty 0 shared static MinWidthProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1e4 <<
047d7404 40000fa 54 ...ependencyProperty 0 shared static MaxWidthProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a1f8 <<
047d7404 40000fb 58 ...ependencyProperty 0 shared static MinHeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a20c <<
047d7404 40000fc 5c ...ependencyProperty 0 shared static MaxHeightProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a220 <<
047d7404 40000fd 60 ...ependencyProperty 0 shared static HorizontalAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a234 <<
047d7404 40000fe 64 ...ependencyProperty 0 shared static VerticalAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a248 <<
047d7404 40000ff 68 ...ependencyProperty 0 shared static MarginProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a25c <<
047d7404 4000100 6c ...ependencyProperty 0 shared static StyleProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a284 <<
047d7404 4000101 70 ...ependencyProperty 0 shared static ParentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2ac <<
047d7404 4000102 74 ...ependencyProperty 0 shared static NameProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2c0 <<
047d7404 4000103 78 ...ependencyProperty 0 shared static TagProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2d4 <<
047d7404 4000104 7c ...ependencyProperty 0 shared static TagInternalProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a2fc <<
04851464 4000105 80 ...ndows.RoutedEvent 0 shared static LoadedEvent
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a420 <<
047d7404 4000106 84 ...ependencyProperty 0 shared static CursorProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a440 <<
047d7404 4000107 88 ...ependencyProperty 0 shared static InstanceDelegateStoreProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a468 <<
047d7404 4000109 8c ...ependencyProperty 0 shared static DataContextProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f5a494 <<
047a1e2c 400010e 90 ...rence, mscorlib]] 0 shared static _staticDelegateList
>> Domain:Value 0433c738:NotInit 06f529d8:00000000 <<
00000000 4000264 30 ...angedEventHandler 0 instance 00000000 IsEnabledChanged
047d7404 4000252 430 ...ependencyProperty 0 shared static IsTabStopProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59ce4 <<
047d7404 4000253 434 ...ependencyProperty 0 shared static TabIndexProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59cf8 <<
047d7404 4000254 438 ...ependencyProperty 0 shared static TemplateProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d20 <<
047d7404 4000255 43c ...ependencyProperty 0 shared static TabNavigationProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d48 <<
047d7404 4000256 440 ...ependencyProperty 0 shared static PaddingProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d70 <<
047d7404 4000257 444 ...ependencyProperty 0 shared static HorizontalContentAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59d98 <<
047d7404 4000258 448 ...ependencyProperty 0 shared static VerticalContentAlignmentProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59dc0 <<
047d7404 4000259 44c ...ependencyProperty 0 shared static BackgroundProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59de8 <<
047d7404 400025a 450 ...ependencyProperty 0 shared static BorderBrushProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59dfc <<
047d7404 400025b 454 ...ependencyProperty 0 shared static BorderThicknessProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e10 <<
047d7404 400025c 458 ...ependencyProperty 0 shared static FontSizeProperty
>> Domain:Value 0433c738:NotInit 06f529d8:04f59e24 <<
047d7404 400025d 45c ...ependencyProperty 0 shared static FontFamilyProperty
>> Domain:Value 0433c738:NotInit 06f529d8: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
Campos:
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 _invocationCount0:005> !do -nofields 04f59c78 // verify _target is page
Name: SilverlightApplication1.Page
MethodTable: 04633a6c
EEClass: 0463196c
Size: 68(0x44) bytes
File: SilverlightApplication1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null/ / Verificar los puntos de _methodPtr Button_Click
/ / Ver cómo todos ellos están unidos entre sí
0:005> En 463c08c
(0463c08c) SilverlightApplication1.Page.Button_Click (System.Object, System.Windows.RoutedEventArgs)
0:005> u 463c08c / / jit-ed método del 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 código nativo
! SilverlightApplication1 Button_Click:
04800398 55 push ebp
04800399 8bec mov ebp, esp
0480039b 83ec08 sub esp, 8
894dfc 0480039e mov dword ptr [ebp-4], ecx
048003a1 8955f8 mov dword ptr [ebp-8], edx
048003a4 833d7435630400 cmp dword ptr ds: [4633574h], 0
048003ab 7405 SilverlightApplication1 je! Button_Click 0 X1a (048003b2)
048003ad e8862a895f llamada coreclr! JIT_DbgIsJustMyCode (64092e38)
0:005>! Ip2md 04800398
MethodDesc: 04633a30
Nombre de método: SilverlightApplication1.Page.Button_Click (System.Object, System.Windows.RoutedEventArgs)
Clase: 0463196c
MethodTable: 04633a6c
mdToken: 06000008
Módulo: 046333b4
IsJitted: sí
CodeAddr: 04800398
0:005>! Dumpil 04633a30
ilAddr = 047e03fe
IL_0000: nop
IL_0001: ret
Cuando tengo tiempo, puedo escribir un blog sobre internos de CLR, para demostrar cómo los objetos se colocan en la memoria, como las llamadas a métodos se envían, etc
Conclusión
Este es un post largo, pero apenas constituyen una visión general de WinDbg y SOS. El buen entendimiento de CLR es importante para la codificación y depuración, WinDbg con SOS es la mejor herramienta para explorar CLR y hacer depuración avanzada. Espero que este post corta pero larga le ayudará a empezar en la exploración de CLR y Silverlight. Gracias!








Comentarios recientes