Pregunta

Estoy utilizando windbg con XP Embedded. El intento de buscar a los símbolos del sistema operativo falla con el mensaje "El archivo de símbolos no se puede conocer. Fallidos a los símbolos de exportación para ntdll.dll". (¿Es esto típico para XP Embedded ???)

No tengo ningún problema de localización y símbolos de carga y fuente de mi propio código. Sin embargo paso a paso por el código sugiere que hay un desajuste severo entre el código y el archivo de símbolos como la ubicación de las variables en la memoria devuelto por dv no parece estar de acuerdo con los contenidos de la memoria real (por ejemplo, asignar una variable, pero después, la dirección que las reclamaciones dv corresponde a que no aparece sin cambios).

Mis listas Sympath el directorio símbolo primero, entonces la caché de archivos de símbolos, entonces el servidor de modo caché no deberían estar interfiriendo.

Es este un efecto latente de no encontrar los archivos de símbolos NTDLL y el uso de otra que no coincide correctamente o hay alguna otra cosa que podría estar causando esto?

Ejemplo:
.sympath D:/Symbols
.symfix+
.srcpath D:/Symbols ** Yes, currently the source is in with the symbols
.reload
** (defaults to export symbols for ntdll.dll since symbol file can't be found)
bp 00401000 (break at a constructor)
g
(program runs till it hits constructor)
l+t
dv /i /t /V ** look up this pointer memory location to check constructor
** We bring up a memory window at the location the this pointer refers to and
** step through the code, but no changes appear in that memory window
** moreover a local LARGE_INTEGER whose value is set with QueryPerformanceCounter
** also appears unchanged after the call
** when the constructor returns we assign the memory address returned by
** new to a global pointer, whose memory address we look up with dt, but
** after the call that address still has 0 in it

Puede alguien decirme cómo solucionar esta realidad?

Como nota al margen que realmente se ejecutan CDB como un servidor en la máquina XP Embedded y utilizar el "conectarse a distancia sesión de" opción de windbg. Los comandos anteriores son todos ejecutados a través de windbg.

¿Fue útil?

Solución

La ejecución! Sym ruidoso antes de la .Reload le permitirá saber por qué no es la búsqueda de símbolos para ntdll.dll. Es muy posible que ellos están simplemente no indexados en el servidor de símbolos, que por lo general significa que está fuera de suerte (en realidad no hay nadie para contacto para conseguir esto fijada por desgracia).

En cuanto a sus otros problemas de símbolos:

1) ¿Es esta la versión de lanzamiento de su código? Si es así, es totalmente espera

2) Si se trata de la versión de depuración, ¿estás 100% seguro de que la fuente que está apuntando a partidos el equipo de destino? Asegúrese de que está 100% antes de contestar:)

-Scott

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top