Поделиться через


Маркеры потока управления

Маркеры потока управления можно использовать для создания циклов условного выполнения и выполнения в программах команд отладчика.

Маркеры потока управления работают так, как их коллеги в C и C++, с следующими общими исключениями:

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

    0:000> .if (ebx>0) { r ebx }
    
  • Каждое условие должно быть выражением. Команды не разрешены. Например, в следующем примере возникает синтаксическая ошибка.

    0:000> .while (r ebx) { .... }
    
  • Последняя команда перед закрывающей фигурной скобкой не должна следовать за точкой с запятой.

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

  • Маркер .if действует как ключевое слово в C.

  • Маркер .else ведет себя так же, как и остальные ключевое слово в C.

  • Маркер elsif действует так же, как и в противном случае, если ключевое слово сочетание в C.

  • Маркер foreach анализирует выходные данные команд отладчика, строки или текстовый файл. Затем этот маркер принимает каждый элемент, который он находит и использует их в качестве входных данных в указанный список команд отладчика.

  • Маркер .for работает как ключевое слово в C, за исключением того, что необходимо разделить несколько команд добавочного с запятой, а не запятыми.

  • Маркер .while ведет себя как в то время как ключевое слово в C.

  • Маркер do работает так, как ключевое слово do в C, за исключением того, что вы не можете использовать слово "while" перед условием.

  • Маркер .break ведет себя как ключевое слово разрыва в C. Этот маркер можно использовать в любом цикле .for, .while или .do.

  • Маркер .continue ведет себя так, как ключевое слово продолжения в C. Этот маркер можно использовать в любом цикле .for, .while или .do.

  • Маркер catch предотвращает завершение программы при возникновении ошибки. За маркером .catch следует фигурные скобки, включающие одну или несколько команд. Если одна из этих команд создает ошибку, отображается сообщение об ошибке, все остальные команды в фигурных скобках игнорируются, а выполнение возобновляется с первой командой после закрытия фигурной скобки.

  • Маркер .leave используется для выхода из блока .catch .

  • Маркер .printf ведет себя как оператор printf в C.

  • Маркер блока .block не выполняет никаких действий. Этот маркер следует использовать только для введения блока, так как вы не можете создать блок только с помощью пары фигурных скобок. Перед открытием фигурной скобки необходимо добавить маркер потока управления.

Расширения !for_each_module, !for_each_frame и !for_each_local также полезны в программе команд отладчика.