No puedo mostrar el código fuente en windbg cuando canalizo ntsd -d
en el destino a través de windbg -k
, pero funciona cuando depuro localmente.¿Cómo se muestra el código fuente en windbg a través de ntsd -d?
Quiero depurar la primera ejecución de código de Winlogon.exe y LSASS.exe. Pero para que sea fácil de reproducir el problema, me hice a esta configuración:
- utilizo el CrashMe sample application, la fuente y símbolos pre-construidos, con copia a C: \ crashme tanto en el objetivo y el anfitrión
- Utilizo las herramientas de depuración de Windows para Windows (DTW) versión 6.12.0002.633 en todas partes.
- El objetivo es ejecutar Windows XP SP3, el host Windows 7 ultimate.
- Cada ruta y configuración es la misma en ambas máquinas: ruta a DTW y ruta a crashme.
- Siempre uso una ruta de acceso totalmente calificada (como c: \ dtw \ ntsd.exe).
- Tengo un XP en una máquina virtual, que iniciaron desde
/noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200
soy capaz de depurar a nivel local con este comando, lanzado desde C: \ crashme:
windbg -g -G -srcpath C:\CrashMe -y C:\CrashMe debug\CrashMe.exe
puedo lanzar el Windows XP máquina virtual y conectarse a ella con este comando:
windbg -n -k com:pipe,port=\\.\pipe\com_1,reconnect -srcpath SRV*;C:\CrashMe -y
c:\windows\system32;c:\windows\symbols;C:\CrashMe\debug
Pero necesito depurar una máquina remota. En el objetivo, tengo estas opciones:
- de depuración a través de
-server
y-remote
- de los frenos en un proceso en ejecución
- Opciones de ejecución Uso de archivo de imagen (IFEO).
En cada una de estas opciones puedo ver los símbolos (x crashme!*
funciona).
no puedo usar # 1 (-server
) o # 2 (breakin.exe <pid>
), porque quiero depurar el código de inicio de un proveedor de autenticación, así que necesito LSASS.exe
inicio bajo ntsd -d
. No puedo dejar que se ejecute y adjuntar más adelante.
Según tengo entendido, necesito usar IFEO. Usando gflags.exe en lugar de modificar el registro manualmente, defino las opciones ejecutables para
c:\dtw\ntsd -d -G -lines -x -y c:\symcache;c:\windows\system32 -n -srcpath C:\CrashMe\
- puedo rompiendo la aplicación, pero yo pongo los puntos de interrupción no se ven afectados.
- Puedo
.open
cualquier archivo, pero no puedo usar el archivo para establecer el punto de interrupción. - No puedo (examinar) ningún símbolo
- No puedo ver el código fuente.
¿Cómo puedo ver mi código fuente DLL de un proceso que se ejecuta bajo ntsd -d
través windbg -k
?
Todavía no he encontrado la respuesta, pero podría tener algo que ver con que ntsd no sea un depurador gráfico? – ixe013
En una nota relacionada, en la misma configuración exacta, puedo depurar un controlador de kernel con código fuente completo en windbg. – ixe013
Si puede depurar un controlador, ya tiene una conexión que también se puede usar para depurar el código del modo de usuario (es decir, su aplicación). – 0xC0000022L