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