Question

J'utilise windbg avec Windows XP intégré. Toute tentative de récupérer les symboles du système d'exploitation échoue avec le message « fichier Symbole n'a pu être trouvée. Abandons pour exporter des symboles pour ntdll.dll ». (Est-ce typique pour XP embedded ???)

Je n'ai pas de localisation des problèmes et des symboles de chargement et de source pour mon propre code. Cependant pas à pas dans le code suggère qu'il existe un décalage important entre le code et le fichier de symboles comme l'emplacement des variables dans la mémoire retournée par dv ne semble pas d'accord avec le contenu de la mémoire (par exemple, affecter une variable, mais après, l'adresse que les revendications dv correspond à ne pas apparaît inchangé).

Mon sympath indique le répertoire de symboles, puis le cache, le serveur donc mises en cache des fichiers de symboles ne doivent pas interférer.

Est-ce un effet latent de ne pas trouver les fichiers de symboles NTDLL et en utilisant une autre qui ne correspond pas correctement ou est-il quelque chose d'autre qui pourrait être la cause?

Exemple:
.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

Quelqu'un peut-il me dire comment résoudre ce fait?

Comme une note côté, nous courons en fait cdb comme serveur sur la machine embarqué xp et utiliser l'option « connecter à la session à distance » de windbg. Les commandes ci-dessus sont toutes exécutées par windbg.

Était-ce utile?

La solution

L'exécution! Sym bruyant avant la .reload vous permettra de savoir pourquoi il est de ne pas trouver des symboles pour ntdll.dll. Il est tout à fait possible qu'ils sont tout simplement pas indexés sur le serveur de symboles, ce qui signifie généralement que vous êtes hors de la chance (il n'y a vraiment personne à contacter pour obtenir ceci fixe malheureusement).

En ce qui concerne vos autres questions de symboles:

1) Est-ce la version release de votre code? Si oui, il est tout à fait attendue

2) Si elle est la version de débogage, êtes-vous sûr à 100% que la source vous pointez correspond à la machine cible? Assurez-vous que vous êtes 100% avant de répondre:)

-Scott

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top