Come faccio a sapere se un eseguibile è stato incrementale legato o no?
-
11-09-2019 - |
Domanda
Sto cercando di utilizzare Purify 6 per analizzare una corruzione della memoria in uno dei nostri eseguibili costruiti con VC ++ 2003 (7.1).
Quando ho strumento il file binario con il comando:
purify /Replace=yes /Run=no myprog.exe
La strumentazione interrompe dicendomi l'eseguibile è stato incrementale legato. Perplesso, ho controllato le opzioni di generazione, ma ci /INCREMENTAL:NO
stato. A dire il vero, ho ricostruito e l'opzione è stata correttamente passato in fase di collegamento.
C'è un modo per sapere se un file eseguibile è stato incrementale legato o no?
Ho dato un'occhiata a ciò che dice dumpbin /HEADERS
ma non ho visto nulla di rilevante.
Grazie.
Soluzione
Opzione 1:
c: ...> dumpbin / sintesi whatever.exe
Se vuoi inserire una sezione ".textbss".
Non sono sicuro che questo è affidabile al 100%, ma nella mia esperienza il linker aggiunge sempre questa sezione quando si fa il collegamento incrementale.
Opzione 2:
Cercare un file ".ilk" accanto al file eseguibile. Visual Studio sembra essere buono sulla pulizia questi fino quando non sono utilizzati, in modo invalidante collegamento incrementale e la costruzione (nemmeno una "ricostruzione") dovrebbe rimuoverlo.
Opzione 3:
Abilita costruire la registrazione (Strumenti / Opzioni / Progetti) e cercare "incrementale /" o "/ INCREMENTALE: NO". Nel file buildlog.html che genera
Opzione 4:
analizzare il file .vcproj. (Ick!)