VSInstr

Средство VSInstr используется для инструментирования двоичных файлов. Для его вызова используется следующий синтаксис:

VSInstr [/U] filename [/options]

В приведенной ниже таблице описываются параметры средства VSInstr.

Параметры Description
Help или ? Вывод справки.
U Запись перенаправленного вывода на консоль в кодировке Юникода. Этот параметр необходимо указывать первым.
@filename Указание имени файла ответов, который содержит один параметр команды на строку. Не используйте кавычки.
OutputPath :path Указание целевого каталога для инструментированного образа. Если путь целевого каталога не указывается, исходный двоичный файл переименовывается посредством добавления расширения ORIG к имени файла и сохраняется в том же каталоге. Инструментирование выполняется для копии двоичного файла.
Exclude: funcspec Указание спецификации функции, которую требуется исключить из инструментирования посредством зондов. Этот параметр удобен, если вставка зондов профилирования в функцию приводит к непредсказуемым или нежелательным результатам.

Не используйте параметры Exclude и Include, относящиеся к функциям в одном двоичном файле.

С помощью отдельных параметров Exclude можно указать несколько спецификаций функций.

funcspec определяется следующим образом:

[пространство_имен<разделитель1>] [класс<разделитель2>]функция

<разделитель1> — это :: для машинного кода и . для управляемого кода.

<разделитель2> — это всегда ::.

Параметр Exclude поддерживается с покрытием кода.

Поддерживается подстановочный знак *. Например, чтобы исключить все функции в пространстве имен, используйте следующий синтаксис:

MyNamespace::*

С помощью команды VSInstr /DumpFuncs можно составить список функций в заданном двоичном файле.
Include: funcspec Задание спецификации функции в двоичном файле, которую требуется инструментировать посредством зондов. Для всех других функций в двоичных файлах инструментирование не выполняется.

С помощью отдельных параметров Include можно указать несколько спецификаций функций.

Не используйте параметры Include и Exclude, относящиеся к функциям в одном двоичном файле.

Параметр Include не поддерживается с покрытием кода.

funcspec определяется следующим образом:

[пространство_имен<разделитель1>] [класс<разделитель2>]функция

<разделитель1> — это :: для машинного кода и . для управляемого кода.

<разделитель2> — это всегда ::.

Поддерживается подстановочный знак *. Например, чтобы включить все функции в пространстве имен, используйте следующий синтаксис:

MyNamespace::*

С помощью команды VSInstr /DumpFuncs можно составить список функций в заданном двоичном файле.
DumpFuncs Создает список функций в указанном образе. Инструментирование не выполняется.
ExcludeSmallFuncs Исключает из инструментирования малозначимые функции, то есть малые функции, которые не вызывают других функций. Параметр ExcludeSmallFuncs позволяет сократить временные затраты на инструментирование и таким образом повысить скорость инструментирования.

При исключении малозначимых функций также уменьшается размер VSP-файла и время, необходимое для анализа данных.
Mark:{Before|After|Top|Bottom},funcname,markid Вставляет метку профилирования (идентификатор, используемый для разделения данных в отчете), которую можно использовать для определения начала и конца диапазона данных в VSP-файле отчета.

Before — непосредственно перед точкой входа целевой функции.

After — непосредственно после точки выхода целевой функции.

Top — непосредственно после точки входа целевой функции.

Bottom — непосредственно перед каждой точкой возврата из целевой функции.

funcname — имя целевой функции.

Markid — положительное целое число (типа long), используемое в качестве идентификатора метки профилирования.
Покрытие Выполняет инструментирование покрытия кода. Его можно использовать только с помощью следующих параметров: Verbose, OutputPath, Exclude и Logfile.
Подробный Параметр Verbose используется для просмотра подробных сведений о процессе инструментирования.
NoWarn [:[Message Number[;Message Number]]] Не выводить все или указанные предупреждения.

Message Number — номер предупреждения. Если значение Message Number не указано, запрещается вывод всех предупреждений.

Дополнительные сведения см. в разделе Предупреждения средства VSInstr.
Элемент управления: { глобальный процесс потоков | | } Задает уровень профилирования для следующих параметров управления сбором данных VSInstr:

Начало

StartOnly

Приостановить

StopOnly

SuspendOnly

ResumeOnly

Thread — указывает для функций управления сбором данных уровень потока. Профилирование запускается и останавливается только для текущего потока. Состояние профилирования других потоков не изменяется. THREAD является значением по умолчанию.

Process — указывает для функций управления сбором данных уровень процесса. Профилирование запускается и останавливается для всех потоков в текущем процессе. Состояние профилирования других процессов не изменяется.

Global — указывает для функций управления сбором данных глобальный уровень (межпроцессный).

Если уровень профилирования не задан, возникает ошибка.
Начало: внутри | { },funcname Ограничивает собираемые данные целевой функцией и дочерними функциями, вызываемыми этой функцией.

Inside — функция StartProfile вставляется непосредственно после точки входа в целевую функцию. Функция StopProfile вставляется непосредственно перед каждой точкой передачи управления из целевой функции.

Outside — функция StartProfile вставляется непосредственно перед каждым вызовом целевой функции. Функция StopProfile вставляется непосредственно после каждого вызова целевой функции.

funcname — имя целевой функции.
Приостановка: внутри | { },funcname Исключает сбор данных для целевой функции и дочерних функций, вызываемых этой функцией.

Inside — функция SuspendProfile вставляется непосредственно после точки входа в целевую функцию. Функция ResumeProfile вставляется непосредственно перед каждой точкой передачи управления из целевой функции.

Outside — функция SuspendProfile вставляется непосредственно перед точкой входа в целевую функцию. Функция ResumeProfile вставляется непосредственно после точки выхода из целевой функции.

funcname — имя целевой функции.

Если целевая функция содержит функцию StartProfile, функция SuspendProfile вставляется перед ней. Если целевая функция содержит функцию StopProfile, функция ResumeProfile вставляется после нее.
StartOnly: { До после | | верхней нижней части | },funcname Начинает сбор данных в ходе сеанса профилирования. При этом в указанном расположении вставляется API-функция StartProfile.

Before — непосредственно перед точкой входа целевой функции.

After — непосредственно после точки выхода целевой функции.

Top — непосредственно после точки входа целевой функции.

Bottom — непосредственно перед каждой точкой возврата из целевой функции.

funcname — имя целевой функции.
StopOnly:{Before|After|Top|Bottom},funcname Прекращает сбор данных в ходе сеанса профилирования. При этом в указанном расположении вставляется функция StopProfile.

Before — непосредственно перед точкой входа целевой функции.

After — непосредственно после точки выхода целевой функции.

Top — непосредственно после точки входа целевой функции.

Bottom — непосредственно перед каждой точкой возврата из целевой функции.

funcname — имя целевой функции.
SuspendOnly:{Before|After|Top|Bottom},funcname Прекращает сбор данных в ходе сеанса профилирования. При этом в указанном расположении вставляется API-функция SuspendProfile.

Before — непосредственно перед точкой входа целевой функции.

After — непосредственно после точки выхода целевой функции.

Top — непосредственно после точки входа целевой функции.

Bottom — непосредственно перед каждой точкой возврата из целевой функции.

funcname — имя целевой функции.

Если целевая функция содержит функцию StartProfile, функция SuspendProfile вставляется перед ней.
ResumeOnly:{Before|After|Top|Bottom},funcname Начинает или возобновляет сбор данных в ходе сеанса профилирования.

Обычно используется для возобновления профилирования после его приостановки с помощью параметра SuspendOnly. При этом в указанном расположении вставляется API-функция ResumeProfile.

Before — непосредственно перед точкой входа целевой функции.

After — непосредственно после точки выхода целевой функции.

Top — непосредственно после точки входа целевой функции.

Bottom — непосредственно перед каждой точкой возврата из целевой функции.

funcname — имя целевой функции.

Если целевая функция содержит функцию StopProfile, функция ResumeProfile вставляется после нее.

См. также