debugging - tools - ¿Cómo configurar símbolos en WinDbg?
windbg windows 7 (1)
Los símbolos se pueden configurar correctamente de varias maneras diferentes.
ADVERTENCIA
: Los ejemplos aquí usan
//server/symbols
que normalmente es un almacenamiento de red que no está disponible.
Adaptarlo a su servidor local o dejar esa parte completamente si no tiene uno.
Un servidor inexistente puede causar retrasos, etc.
Versión TLDR para el 80% de los casos
Cree una nueva carpeta
c:/symbols
para los símbolos proporcionados por Microsoft.
Luego escribe
.symfix+ c:/symbols
.reload
(o
reload -f
si es necesario)
Asegúrese de tener una conexión a Internet, ya que se pondrá en contacto con algunos servidores de Microsoft y descargará símbolos desde allí.
En más del 80% de los casos, esto ya podría resolver su problema de símbolos. Si no, sigue leyendo.
Fijación de símbolos por comandos
WinDbg buscará los símbolos en el orden en que aparecen en la ruta del símbolo. Por lo tanto, es una buena idea poner primero sus símbolos locales, luego algunas redes locales de la compañía comparten y luego descargan símbolos de Internet y almacenan una copia localmente.
.sympath c:/mysymbols ; *** Symbols of your application, locally, flat list of PDB files
.sympath+ cache*c:/symbolcache ; *** (optional) Create a cache for everything
.sympath+ //server/symbols ; *** Symbols provided from a network share
.symfix+ c:/symbols ; *** Microsoft symbols
Fijación de símbolos por menú
En WinDbg (pero no los equivalentes de la línea de comandos) puede establecer una ruta de símbolo mediante
File/Symbol File Path...
o presionando
Ctrl
+
S.
Lo ingresas en el siguiente formato
c:/mysymbols;cache*c:/symbolcache;//server/symbols;SRV*c:/symbols*http://msdl.microsoft.com/download/symbols
Fijación de símbolos por línea de comando
WinDbg también toma el modificador de línea de comando
-y
si prefiere tener diferentes enlaces de escritorio con diferentes configuraciones de ruta de símbolo.
WinDbg -y "<symbol path>"
Tenga en cuenta que necesita la ruta completa aquí, que está en una forma como
c:/mysymbols;cache*c:/symbolcache;//server/symbols;SRV*c:/symbols*http://msdl.microsoft.com/download/symbols
Fijación de símbolos por variable de entorno
Hay una variable de entorno llamada
_NT_SYMBOL_PATH
que también se puede establecer en una ruta de símbolo.
Use la siguiente sintaxis:
c:/mysymbols;cache*c:/symbolcache;//server/symbols;SRV*c:/symbols*http://msdl.microsoft.com/download/symbols
Tenga en cuenta que WinDbg no solo evalúa esta variable, sino también Visual Studio, Process Explorer, Process Monitor y potencialmente otro software. Puede experimentar un impacto en el rendimiento al configurar esta variable de entorno.
Guardar la ruta del símbolo como parte de un espacio de trabajo
Si tiene una configuración de símbolos bastante compleja que incluye varias rutas, familiarícese con el concepto de espacios de trabajo WinDbg .
Los espacios de trabajo le permiten guardar la ruta del símbolo para que no tenga que volver a escribir todos los comandos en cada sesión de depuración.
Una vez que esté satisfecho con el espacio de trabajo, cree un enlace para que WinDbg incluya
-Q
que significa "Suprimir la molesta pregunta" ¿Guardar espacio de trabajo? ".
Hasta ahora estoy muy feliz de haber guardado los símbolos como parte del espacio
Base
trabajo
Base
.
Símbolos diferidos
Los símbolos diferidos (indicados como tales durante un comando
lm
) no son un problema.
WinDbg los cargará cuando sea necesario.
Para forzar la carga de todos ellos, escriba
ld*
Depuración de problemas de símbolos
Si los símbolos (PDB) no funcionan como se esperaba, use el
!sym noisy
para obtener más información sobre lo que WinDbg está haciendo exactamente al resolver símbolos.
Cuando encuentre la solución, apáguela con
!sym quiet
Para verificar la corrección de los símbolos individuales, puede usar la herramienta
symchk
que viene con WinDbg.
Symchk /if <exe> /s <symbol path> /av /od /pf
/if = input is a file
/s = symbol file path
/od = all details
/av = verify
/pf = check if private symbols are available
u obtener ChkMatch que es un poco más fácil de usar
ChkMatch -c <exe file> <pdb file>
Si tiene problemas para acceder a los símbolos de un recurso compartido de red, asegúrese de haber iniciado sesión antes en el recurso compartido de red. AFAIR, WinDbg no solicita credenciales.
Documentación oficial
Use el Microsoft Symbol Server para obtener archivos de símbolos de depuración (debería redirigir aquí, pero la redirección está rota actualmente)
Estoy usando Debugging Tools para Windows y recibo el siguiente mensaje de error al iniciar WinDbg / cdb o ntsd:
Symbol search path is: *** Invalid ***
****************************************************************************
* Symbol loading may be unreliable without a symbol search path. *
* Use .symfix to have the debugger choose a symbol path. *
* After setting your symbol path, use .reload to refresh symbol locations. *
****************************************************************************
Al ejecutar comandos arbitrarios, también recibo el mensaje de error
*** ERROR: Module load completed but symbols could not be loaded for <module>.<ext>
Y lo siguiente parece estar relacionado:
*********************************************************************
* Symbols can not be loaded because symbol path is not initialized. *
* *
* The Symbol Path can be set by: *
* using the _NT_SYMBOL_PATH environment variable. *
* using the -y <symbol_path> argument when starting the debugger. *
* using .sympath and .sympath+ *
*********************************************************************
En a
!analyze -v
también he visto
DEFAULT_BUCKET_ID: WRONG_SYMBOLS
y
*************************************************************************
*** ***
*** Either you specified an unqualified symbol, or your debugger ***
*** doesn''t have full symbol information. Unqualified symbol ***
*** resolution is turned off by default. Please either specify a ***
*** fully qualified symbol module!symbolname, or enable resolution ***
*** of unqualified symbols by typing ".symopt- 100". Note that ***
*** enabling unqualified symbol resolution with network symbol ***
*** server shares in the symbol path may cause the debugger to ***
*** appear to hang for long periods of time when an incorrect ***
*** symbol name is typed or the network symbol server is down. ***
*** ***
*** For some commands to work properly, your symbol path ***
*** must point to .pdb files that have full type information. ***
*** ***
*** Certain .pdb files (such as the public OS symbols) do not ***
*** contain the required information. Contact the group that ***
*** provided you with these symbols if you need this command to ***
*** work. ***
*** ***
*************************************************************************
¿Cómo configuro WinDbg para encontrar los símbolos?
Descargo de responsabilidad: esta pretende ser una pregunta canónica para todos los mensajes de símbolos incorrectos en windbg .