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

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

Когда я использую двоичный файл с помощью команды:

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

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

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

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

Благодарю.

1 ответ

Решение

Опция 1:

c:...> dumpbin / summary what.exe

Ищите раздел ".textbss".

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

Вариант 2:

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

Вариант 3:

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

Вариант 4:

Разобрать файл.vcproj. (Ик!)

Другие вопросы по тегам