Red de conocimiento informático - Problemas con los teléfonos móviles - Cómo configurar puntos de interrupción de la aplicación en Windbg

Cómo configurar puntos de interrupción de la aplicación en Windbg

, configurado en cache*d:\symbols;srv*/download/symbols Puede cambiar la ruta a su propia ruta de caché local. Si tiene una buena escalera, puede configurarla en modo proxy global, de modo que el archivo PDB de .NET Framework se descargue al directorio de caché durante la depuración, de modo que podamos ver información más detallada durante la depuración.

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

LoaderHeap.00000000

TypeDefToMethodTableMap: 00140038

TypeRefToMethodTableMap: 0014004c

MethodDefToDescMap: 0014009c

FieldDefToDescMap: 001400dc

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!