Как я могу узнать, был ли исполняемый файл инкрементно связан или нет?

StackOverflow https://stackoverflow.com/questions/1093258

Вопрос

Я пытаюсь использовать Purify 6 для анализа повреждения памяти в одном из наших исполняемых файлов, созданных с помощью VC++ 2003 (7.1).

Когда я снабжаю двоичный файл командой:

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

Инструментарий прерывает работу, сообщая мне, что исполняемый файл был постепенно связан.Озадаченный, я проверил варианты сборки, но /INCREMENTAL:NO был здесь.Конечно, я перестроил его, и опция была правильно передана во время компоновки.

Есть ли способ узнать, был ли исполняемый файл инкрементально связан или нет?

Я посмотрел, что dumpbin /HEADERS говорит, но не увидел ничего значимого.

Спасибо.

Это было полезно?

Решение

Опция 1:

c:...>dumpbin/summarywhatever.exe

Найдите раздел «.textbss».

Я не уверен, что это на 100% надежно, но по моему опыту компоновщик всегда добавляет этот раздел при выполнении инкрементального связывания.

Вариант 2:

Найдите файл «.ilk» рядом с исполняемым файлом.Visual Studio, кажется, хорошо очищает их, когда они не используются, поэтому отключение инкрементального связывания и сборки (даже «перестроения») должно удалить их.

Вариант 3:

Включите ведение журнала сборки (Инструменты/Параметры/Проекты) и найдите «/INCREMENTAL» или «/INCREMENTAL:NO» в создаваемом файле buildlog.html.

Вариант 4:

Разберите файл .vcproj.(черт!)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top