Cómo configurar puntos de interrupción de la aplicación en Windbg
Por supuesto, también puede obtener activamente los símbolos de depuración oficiales de Microsoft a través de la línea de comando.
symchk /r C:\Windows\System32\*.dll /s SRV*D:\symbols\*/download/symbolssymchk C:\WINDOWS\System32\KERNELBASE.dll /s SRV*D: \symbols\*/download/symbols
2. Cargue la versión correcta de CLR y SOS (Son of Strike).
Al depurar aplicaciones .Net en modo de usuario Windbg, necesitamos cargar las versiones correctas de CLR y SOS (Son of Strike). Tenga en cuenta que se deben cargar las versiones correctas de CLR y SOS. Si la aplicación está compilada en Load SOS y CLR en el directorio .NET\Framework64\v4.0.30319. Para la compilación de 64 bits, debe cargar SOS y CLR desde el directorio C:\Windows\Microsoft.NETFramework64\v4.0.30319. Los programas 2.0 requieren cargar MSCORWKS.
3. Ejemplo
Tome una demostración simple como ejemplo para aprender cómo establecer puntos de interrupción en Windbg (compilada en 4.0 FrameWork, plataforma X86). El programa calcula el índice de masa corporal en función del peso y la altura, suponiendo que un índice de masa corporal de 21 es el más saludable, y clasifica una lista determinada de personas según el valor absoluto del tamaño de la desviación. Supongamos que cuanto menor sea la desviación, más sano estará el cuerpo.
1 usando System;
2 usando System.Collections.Generic;
3 usando System.Linq;
4 usando System. Text;0:000> !dumpmodule -mt 00142edc
Nombre: D:\bin\Health.exe
Atributos: PEFile
Ensamblado: 003bfbd8 p>
LoaderHeap.00000000
TypeDefToMethodTableMap: 00140038
TypeRefToMethodTableMap: 0014004c
MethodDefToDescMap: 0014009c
FieldDefToDescMap: 001400dc p>
MemberRefToDescMap: 00000000
FileReferencesMap: 001400f8
AssemblyReferencesMap: 001400fc
Dirección inicial de metadatos: 0123237c (2360 bytes)
Tipos definidos en este módulo
Nombre MT TypeDef
--------------------- ------ ---------------------------------------- ----
001437b8 0x02000004 Demostración de Windbug.
Tipo al que hace referencia este módulo
Nombre MT TypeRef
--------------------- -------------------------------------------------- -------
665941b8 0x02000001 System.Object
0:000> !dumpmt -md 001437b8
EEClass: 00141304
Módulo:00142edc
Nombre: WindbugDemo.Health
mdToken: 02000004
Archivo: D:\bin\Health.exe
BaseSize: 0xc
ComponentSize: 0x0
Ranuras en VTable: 6
Número de IFaces en IFaceMap:
6648e860 66196154 Sistema PreJIT .Object.GetHashCode()
6648e2a0 66196168 PreJIT System.Object.Finalize()
0014c015 001437b0 NINGUNO WindbugDemo.
0014c011 001437a4 NINGUNO WindbugDemo.Health.Main (System.String[])
3.5 También puede establecer puntos de interrupción basados en la dirección del código compilado JIT.
0:000> !name2ee ¡Salud!