Средство PEVerify (Peverify.exe)

Обновлен: Ноябрь 2007

Инструмент PEVerify помогает разработчикам, создающим код на промежуточном языке Microsoft (MSIL) — авторам компиляторов, обработчиков сценариев и т. д. — определить, насколько их код на языке MSIL и связанные с ним метаданные отвечают требованиям строгой типизации. Некоторые компиляторы создают проверяемый строго типизированный код только в том случае, если разработчик не применяет определенные конструкции языка. При работе с таким компилятором разработчику иногда требуется проверить, нет ли в написанном им коде отступлений от принципа строгой типизации. В этом случае для проверки MSIL и метаданных в файлах можно использовать инструмент PEVerify.

peverify filename [options]

Параметры

Аргумент

Описание

имя_файла

Переносимый исполняемый файл (PE-файл), который должен быть проверен на корректность MSIL и метаданных.

Параметр

Описание

/break=maxErrorCount

Прекращает проверку после обнаружения числа ошибок, равного значению аргумента максимальное_количество_ошибок.

Этот параметр не поддерживается в версии .NET Framework 2.0 и более поздних.

/clock

Измеряет и выводит значения времени следующих проверок (в миллисекундах):

MD Val. cycle

Цикл проверки метаданных

MD Val. pure

Чистое время проверки метаданных

IL Ver. cycle

Цикл проверки промежуточного языка MSIL

IL Ver pure

Чистое время проверки промежуточного языка MSIL

Значения MD Val. cycle и IL Ver. cycle включают время, затраченное на выполнение необходимых процедур запуска и завершения проверки. Периоды времени MD Val. pure и IL Ver pure отражают время, требуемое для выполнения только проверки.

/help

Отображает синтаксис команд и параметров программы.

/hresult

Выводит коды ошибок в шестнадцатеричном формате.

/ignore=hex.code [, hex.code]

Игнорирует ошибки с заданными кодами.

/ignore=@файл_отклика

Не обрабатывает ошибки с кодами, список которых содержится в указанном вспомогательном файле.

/il

Производит проверку строгой типизации MSIL для методов, реализованных в сборке, указанной в параметре имя_файла. Если отсутствует параметр /quiet, средство выводит подробное описание всех обнаруженных проблем.

/md

Производит проверку метаданных, которые содержатся в сборке, указанной в параметре имя_файла. Средство проверяет всю структуру метаданных, содержащихся в файле, и выводит описание всех обнаруженных проблем.

/nologo

Отключает вывод сведений о версии продукта и авторских правах.

/nosymbols

В платформе .NET Framework версии 2.0 отключает номера строк для обеспечения обратной совместимости.

/quiet

Устанавливает тихий режим. Отключает вывод сообщений об обнаруженных проблемах. Средство Peverify.exe в любом случае уведомляет, соблюдена ли строгая типизация в файле, однако не дает сведений о встретившихся в ходе проверки проблемах.

/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

См. также

Основные понятия

Написание проверяемого строго типизированного кода

Строгая типизация и безопасность

Ссылки

Инструменты .NET Framework

Командная строка пакета SDK