Peverify.exe (средство PEVerify)
Инструмент PEVerify помогает разработчикам, создающим код на промежуточном языке Microsoft (MSIL) — авторам компиляторов, обработчиков скриптов и т. д. — определить, насколько их код на языке MSIL и связанные с ним метаданные отвечают требованиям строгой типизации. Некоторые компиляторы создают проверяемый типобезопасный код только в том случае, если разработчик не применяет определенные конструкции языка. При работе с таким компилятором разработчику иногда требуется проверить, нет ли в написанном им коде отступлений от принципа строгой типизации. В этом случае для проверки MSIL и метаданных в файлах можно использовать инструмент PEVerify.
Это средство устанавливается автоматически с Visual Studio и пакетом SDK Windows. Чтобы запустить инструмент, мы рекомендуем использовать командную строку Visual Studio или командную строку пакета Windows SDK (командную оболочку). Эти служебные программы позволяют легко работать с инструментом, не переходя к папке установки. Дополнительные сведения см. в разделе Командная строка Visual Studio и пакета Windows SDK.
Если на компьютере установлена среда Visual Studio: на панели задач последовательно щелкните Start, All Programs, Visual Studio, Visual Studio Tools и Visual Studio Command Prompt.
– или –
Если на компьютере установлен пакет Windows SDK: на панели задач щелкните Start, выберите All Programs и откройте папку с пакетом Windows SDK, затем щелкните Command Prompt (или CMD Shell).
В командной строке введите следующее:
peverify filename [options]
Параметры
Аргумент |
Описание |
---|---|
filename |
Переносимый исполняемый файл (PE-файл), который должен быть проверен на корректность MSIL и метаданных. |
Параметр |
Описание |
---|---|
/break=макс_кол-во_ошибок |
Прекращает проверку после обнаружения числа ошибок, равного значению аргумента максимальное_количество_ошибок. Этот параметр не поддерживается в версии .NET Framework 2.0 и более поздних. |
/clock |
Измеряет и выводит значения времени следующих проверок (в миллисекундах):
Значения MD Val. cycle и IL Ver. cycle включают время, затраченное на выполнение необходимых процедур запуска и завершения проверки. Периоды времени MD Val. pure и IL Ver pure отражают время, требуемое для выполнения только проверки. |
/help |
Отображает синтаксис команд и параметры программы. |
/hresult |
Выводит коды ошибок в шестнадцатеричном формате. |
/ignore=шестнадцатеричный_код [, шестнадцатеричный_код] |
Игнорирует ошибки с заданными кодами. |
/ignore = @файл_ответов |
Не обрабатывает ошибки с кодами, список которых содержится в указанном вспомогательном файле. |
/il |
Производит проверку строгой типизации MSIL для методов, реализованных в сборке, указанной в параметре имя_файла. Если отсутствует параметр /quiet, средство выводит подробное описание всех обнаруженных проблем. |
/md |
Производит проверку метаданных, которые содержатся в сборке, указанной в параметре имя_файла. Средство проверяет всю структуру метаданных, содержащихся в файле, и выводит описание всех обнаруженных проблем. |
/nologo |
Отключает вывод сведений о версии продукта и авторских правах. |
/nosymbols |
В платформе .NET Framework версии 2.0 отключает номера строк для обеспечения обратной совместимости. |
/quiet |
Устанавливает тихий режим. Отключает вывод сообщений об обнаруженных проблемах. Средство Peverify.exe в любом случае уведомляет, соблюдена ли безопасность типов в файле, однако не дает сведений о встретившихся в ходе проверки проблемах. |
/transparent |
Проверка только прозрачных методов. |
/unique |
Не обрабатывает ошибки с повторяющимися кодами. |
/verbose |
В платформе .NET Framework версии 2.0 выводит дополнительные сообщения в проверочных сообщениях MSIL. |
/? |
Отображает синтаксис команд и параметры программы. |
Заметки
В среде CLR реализация механизмов безопасности и изоляции основана на типобезопасности выполнения кода приложений. Обычно код, для которого невозможно подтвердить типобезопасность, не выполняется, хотя можно настроить политику безопасности таким образом, чтобы допускалось исполнение доверенного, но не подтвержденного кода.
Если параметры /md и /il не заданы Peverify.exe выполняет проверку как MSIL, так и метаданных. Сначала Peverify.exe проверяет метаданные (параметр**/md**). Если ошибок нет, выполняется проверка MSIL (параметр /il). Если указаны оба параметра /md и /il, проверка по параметру /il производится даже при наличии ошибок в метаданных. Поэтому при отсутствии ошибок в метаданных команда peverify имя_файла эквивалентна команде peverify имя_файла /md /il.
Средство Peverify.exe осуществляет полную проверку MSIL на основе анализа потоков данных и проверяет правильность метаданных на основе списка из нескольких сотен правил. Дополнительные сведения о проверках, производимых Peverify.exe, см. в разделах, посвященных спецификации проверки метаданных и спецификации набора инструкций MSIL в папке "Tools Developers Guide" в Пакет средств разработки программного обеспечения (SDK) для Windows.
Обратите внимание, что в платформе .NET Framework версии 2.0 или более поздней предоставляется поддержка возвращаемых значений byref, заданных с использованием следующих инструкций MSIL: dup, ldsflda, ldflda, ldelema, call и unbox.
Примеры
Приведенная ниже команда производит проверку метаданных и строгой типизации MSIL для методов, реализованных в сборке myAssembly.exe.
peverify myAssembly.exe /md /il
После полного завершения обработки этого запроса Peverify.exe выводит на экран следующее сообщение.
All classes and methods in myAssembly.exe Verified
Приведенная ниже команда производит проверку метаданных и строгой типизации MSIL для методов, реализованных в сборке myAssembly.exe. Средство выводит на экран данные о затраченном на проверку времени.
peverify myAssembly.exe /md /il /clock
После полного завершения обработки этого запроса Peverify.exe выводит на экран следующее сообщение.
All classes and methods in myAssembly.exe Verified
Timing: Total run 320 msec
MD Val.cycle 40 msec
MD Val.pure 10 msec
IL Ver.cycle 270 msec
IL Ver.pure 230 msec
Приведенная ниже команда производит проверку метаданных и строгой типизации MSIL для методов, реализованных в сборке myAssembly.exe. Однако Peverify.exe останавливается при достижении максимального числа ошибок, равного 100. Средство также игнорирует ошибки с заданными кодами.
peverify myAssembly.exe /break=100 /ignore=0x12345678,0xABCD1234
Приведенная ниже команда позволяет получить такой же результат, как и команда из предыдущего примера, но коды ошибок, которые следует пропустить, берутся из файла ответов ignoreErrors.rsp.
peverify myAssembly.exe /break=100 /ignore@ignoreErrors.rsp
Файл ответов содержит список кодов ошибок, разделенных запятыми.
0x12345678, 0xABCD1234
Файл ответов может также содержать по одной ошибке на строку.
0x12345678
0xABCD1234
См. также
Ссылки
Командная строка Visual Studio и пакета Windows SDK
Основные понятия
Написание проверяемого строго типизированного кода
Строгая типизация и безопасность
Другие ресурсы
Журнал изменений
Дата |
Журнал |
Причина |
---|---|---|
Апрель 2011 |
Добавлены сведения об использовании командных строк Visual Studio и Windows SDK. |
Улучшение информации. |