¿Cómo puedo saber si un archivo ejecutable se vincula de forma incremental o no?
-
11-09-2019 - |
Pregunta
Estoy tratando de utilizar Purificar 6 para analizar una corrupción de memoria en uno de nuestros ejecutables construidos con VC ++ 2003 (7,1).
Cuando el binario instrumento con el comando:
purify /Replace=yes /Run=no myprog.exe
La instrumentación aborta decirme el ejecutable se vincula de forma incremental. Desconcertado, he comprobado las opciones de compilación, pero /INCREMENTAL:NO
estaba allí. Para estar seguro, lo reconstruí y la opción fue aprobada correctamente en tiempo de enlace.
¿Hay una manera de saber si un archivo ejecutable se vincula de forma incremental o no?
Yo tenía un vistazo a lo que dice dumpbin /HEADERS
pero no vi nada relevante.
Gracias.
Solución
Opción 1:
c: ...> dumpbin / Resumen whatever.exe
Busque una sección de ".textbss".
No estoy seguro de que esto es 100% fiable, pero en mi experiencia el enlazador siempre añade esta sección cuando se hace la vinculación incremental.
Opción 2:
Busque un archivo ".ilk" junto al ejecutable. Visual Studio parece ser bueno sobre la limpieza de éstos cuando no se usan, así que deshabilitar la vinculación incremental y la construcción (ni siquiera una "reconstrucción") debe quitarlo.
Opción 3:
Habilitar registro de acumulación (Herramientas / Opciones / Proyectos) y busque "/ Incremental" o "/ incremental: NO". Buildlog.html en el archivo que genera
Opción 4:
analizar el archivo .vcproj. (Ick!)