Профилировщик Visual Studio выдает ошибку VSP1033 (не содержит распознанный исполняемый файл)

Я пытаюсь профилировать C++ DLL, используя инструменты производительности Visual Studio. Я создаю сеанс профилирования, ориентированный на мою DLL, захожу в ее свойства и переопределяю параметры запуска, чтобы запустить исполняемый файл, загружающий эту DLL.

Когда я пытаюсь запустить профилировщик, я получаю: Error VSP1033: The file 'C:\src\mam\bin\Profile\Win32\Helper.dll' does not contain a recognized executable image. Создается впечатление, что он пытается запустить DLL, но генерирует пустой отчет, используя имя исполняемого файла.

Есть ли способ решить эту проблему?


person Collin Dauphinee    schedule 22.11.2013    source источник


Ответы (2)


Старый вопрос, но я также недавно наткнулся на это. Проблема для меня заключалась в том, что я работал на 64-битной ОС, но не все цели компиляции были фактически установлены на 64-битные. В моем случае я профилировал управляемое приложение, и мне пришлось явно установить его на 64-битный, любого процессора было недостаточно. Это также верно для библиотек в приложении.

person aL3891    schedule 10.12.2015
comment
На 64-битной платформе я не мог заставить его работать как x86, принудительное использование x64, как предложил Al3891, было единственным способом. - person smirkingman; 18.07.2017

Я видел, как это происходит, когда в сборке присутствуют определенные коды операций ЦП.

Например:

_mm_crc32_u16
_mm_crc32_u8

и вариант Popcnt для Visual C++ для 16-битных чисел.

Посмотрите, есть ли у вас что-нибудь из этого. В противном случае вы можете закомментировать половину своего кода, затем другую половину и т. д., чтобы выполнить двоичный поиск ошибочной строки кода.

person Anthony Hayward    schedule 08.09.2014
comment
Я также был свидетелем этого, когда DLL включала простой ассемблерный код (для обнаружения VPC/VMware). Рекомендую поискать _asm в своих проектах и ​​временно закомментировать. - person GilesDMiddleton; 01.04.2016