Question

Je reçois des rapports de crash des utilisateurs avec des informations Dr. Watson, y compris l'EIP. Je veux commencer à déboguer, puis à définir l'EIP et à voir à quelle ligne cela m'amène. J'ai également des informations de ligne activées dans les versions de version.

J'ai une étiquette dans le contrôle des sources afin que je puisse tirer les sources que j'ai utilisées pour la construire, mais je n'ai aucune idée si le linker produira un EXE avec les mêmes compensations, sinon l'EIP ne serait pas utile.

Était-ce utile?

La solution

Il n'y a pas de Garuntee que les décalages seront les mêmes, sauf si vous pouvez vous assurer que toutes les bibliothèques utilisées, toutes les sources et le linker n'ont pas changé depuis que vous avez vérifié le code dans le contrôle de version. C'est pourquoi de nombreuses entreprises vont réellement se poursuivre pour maintenir les exécutables sous la gestion de la configuration.

D'après l'expérience, si les décalages ne sont pas les mêmes, cela devient apparent très rapidement, vous pouvez donc au moins vérifier, et si les choses n'ont pas de sens, ignorez l'EIP et d'autres décalages d'adresse exécutable.

Si vous construisez un fichier de carte et que vous avez enregistré de la version de la version du crash, et un fichier de carte de la source reconstruite, vous pouvez faire une analyse comparative (fonction par fonction vraiment) pour récupérer un peu utile à partir d'adresses exécutables et décalages.

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