Удалить IMAGE_DEBUG_DIRECTORY из раздела .rdata

Как я могу удалить данные IMAGE_DEBUG_DIRECTORY из раздела .rdata PE?

Я использую MS Visual Studio 2015. Я проверил почти все параметры компиляции свойств проекта. Но данные IMAGE_DEBUG_DIRECTORY все еще существуют в моем выходном исполняемом файле...


person ChangUk    schedule 07.08.2017    source источник


Ответы (1)


вы можете сделать это, установив недокументированный параметр компоновщика /EMITPOGOPHASEINFO. поэтому перейдите в командную строку компоновщика и вставьте эту строку (/EMITPOGOPHASEINFO) в дополнительные параметры. этот параметр подавляет раздел pgo (Profile-Guided Optimizations) в файле pe

читайте также : Pogo, также известный как PGO, также известный как Оптимизация под управлением профиля и Пошаговое руководство: использование оптимизации на основе профиля

и, конечно же, вы не должны генерировать отладочную информацию — используйте Опция компоновщика /DEBUG — убедитесь, что в командной строке компоновщика нет опции /DEBUG. или альтернативно используйте комбинацию /DEBUG:NONE /EMITPOGOPHASEINFO - в этом случае не должно быть IMAGE_DEBUG_DIRECTORY в pe-файле

person RbMm    schedule 07.08.2017
comment
Мой Бог! Спасибо. Я многому научился у вас. С опцией компиляции /EMITPOGOPHASEINFO я мог бы удалить IMAGE_DEBUG_TYPE_ данных из раздела .rdata. Но IMAGE_DEBUG_DIRECTORY данные все еще существуют... - person ChangUk; 08.08.2017
comment
@ChangUk - вы используете /DEBUG вариант компоновщика? Я предполагаю, что вы удалите его - это хорошо известно. вы должны удалить его - не должно быть /DEBUG в командной строке. или /DEBUG:NONE /EMITPOGOPHASEINFO - person RbMm; 08.08.2017
comment
Я установил «Нет» в Linker › Отладка › Свойство Generate Debug Info... Несмотря на отсутствие опции /DEBUG, данные IMAGE_DEBUG_DIRECTORY все еще живы... - person ChangUk; 08.08.2017
comment
@ChangUk - скопируйте и вставьте именно вашу командную строку компоновщика. не должно быть IMAGE_DEBUG_DIRECTORY, если вы не используете /DEBUG и используете /EMITPOGOPHASEINFO - person RbMm; 08.08.2017
comment
Ой! Наконец-то я нашел решение! Я изменил некоторые параметры компоновщика: с /OPT:REF на /OPT:NOREF и с /LTCG:incremental на /LTCG. Тогда работает хорошо. Я понял подсказку из «Оптимизации на основе профиля», которую вы сказали. Большое спасибо! - person ChangUk; 08.08.2017
comment
@ChangUk - да, /OPT:NOREF и /LTCG типичны для релизной сборки. whrn ваш первоначальный вариант, связанный с отладочной сборкой - person RbMm; 08.08.2017