Question

J'essaie d'utiliser Purify 6 pour analyser une corruption de mémoire dans l'un de nos exécutables construits avec VC++ 2003 (7.1).

Quand j'instrumente le binaire avec la commande :

purify /Replace=yes /Run=no myprog.exe

L'instrumentation s'arrête en me disant que l'exécutable était lié progressivement.Perplexe, j'ai vérifié les options de construction mais /INCREMENTAL:NO était là.Pour être sûr, je l'ai reconstruit et l'option a été correctement passée au moment de la liaison.

Existe-t-il un moyen de savoir si un exécutable a été lié de manière incrémentale ou non ?

J'ai regardé quoi dumpbin /HEADERS dit mais je n'ai rien vu de pertinent.

Merci.

Était-ce utile?

La solution

Option 1:

c:...> dumpbin / résumé quel que soit.exe

Recherchez une section ".textbss".

Je ne suis pas sûr que ce soit fiable à 100 %, mais d'après mon expérience, l'éditeur de liens ajoute toujours cette section lors de la création de liens incrémentiels.

Option 2:

Recherchez un fichier ".ilk" à côté de l'exécutable.Visual Studio semble être efficace pour les nettoyer lorsqu'ils ne sont pas utilisés, donc la désactivation de la liaison et de la construction incrémentielles (pas même une "reconstruction") devrait les supprimer.

Option 3 :

Activez la journalisation de build (Outils/Options/Projets) et recherchez "/INCREMENTAL" ou "/INCREMENTAL:NO" dans le fichier buildlog.html qu'il génère.

Option 4 :

Analysez le fichier .vcproj.(ick!)

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