Как я могу узнать, был ли исполняемый файл инкрементно связан или нет?
Я пытаюсь использовать 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. (Ик!)