x64 tutorial tools portable online microsoft debug windbg

windbg - tutorial - Formato_NT_SYMBOL_PATH



windbg windows 10 x64 (2)

Aquí hay una publicación detallada sobre problemas de depuración con la carga de símbolos.

Cargando símbolos en Windbg

Estoy intentando usar Windbg más y sigo teniendo problemas con el caché de símbolos. No me queda claro cuál es el formato de la cadena.

Tengo algunos requisitos:

El archivo de símbolos de nuestra compilación distribuida en // foo / Build1234 no está organizado como un servidor de símbolos. Si lo entiendo correctamente, necesito usar la palabra clave caché.

Teniendo en cuenta estos requisitos, ¿parece esto un srvpath con el formato correcto?

cache*//foo/Build1234;srv*c:/dev/symbols*http://msdl.microsoft.com/download/symbols

Editar:

Acabo de comenzar a leer la depuración avanzada de Windows y me había malinterpretado cómo funciona la palabra clave de caché. Pensé que era una forma de decirle al depurador que la carpeta es solo una carpeta de archivos y no un servidor de símbolos. Después de que Michael dejó su comentario, vuelvo a leer la sección y veo que efectivamente funciona como lo describió Michael.

Ahora estoy confundido por cuando usas un; o un * para separar rutas / URLs. Y cuando necesites el prefijo srv *. En la ayuda en línea para windbg dan este ejemplo:

//someshare/that/cachestar/ignores;srv*c:/mysymbols*http://msdl.microsoft.com/download/symbols;cache*c:/mysymbols;//anothershare/that/gets/cached

Los símbolos de // someshare no se almacenan en caché, los símbolos de Microsoft se almacenan en c: / mysymbols, y c: / mysymbols se usa como caché para cualquier otra ruta a la derecha de la directiva de caché *.

El uso ocasional de srv * me confunde: no entiendo por qué la primera y la última ruta no tienen el prefijo srv *.

Edición 2:

Esto está empezando a tener sentido lentamente para mí. La directiva srv se usa para servidores de símbolos, y no para directorios de símbolos normales. Entonces, creo que la respuesta a mi pregunta original es esta:

//foo/Build1234;cache*c:/dev/symbols;srv*http://msdl.microsoft.com/download/symbols


SRV*C:/dev/symbols*http://msdl.microsoft.com/download/symbols;//foo/build1234

Debería funcionar bien, si //foo/build1234 es simplemente un PDB plano. El caché no es necesario aquí; solo necesita agregar el directorio a la ruta de su símbolo.

La palabra clave de caché especifica dónde desea almacenar en caché sus archivos de símbolos, y es útil para almacenar símbolos en caché localmente desde //foo/build1234 compartidos no indexados (como //foo/build1234 )

cache*C:/dev/symbols;SRV*C:/dev/symbols*http://msdl.microsoft.com/download/symbols;//foo/build1234

La ruta anterior almacenaría los símbolos del servidor de símbolos de MS y su símbolo compartido a su máquina local en C: / dev / symbols.

Para depurar problemas de símbolos usando windbg, haz

!sym noisy .reload <some exe or DLL in your session>

Y luego realice alguna acción que obligue a cargar el PDB. Verá dónde windbg está buscando archivos, y si rechaza un PDB por qué lo hizo.

!sym quiet

Entonces suprimirá las indicaciones de símbolos.