Пошаговое выполнение программы

Для пошаговой отладки используют специальную панель инструментов (Рис. 19.7).


Рис. 19.7.Специальная панель инструментов отладки

Или набор горячих клавиш (которые дублируют работу специальной панели инструментов), список которых представлен ниже:

· Continue (F5) - продолжить выполнение программы.

· Stop debugging (Shift+F5) - остановить отладку. При этом остановится и выполнение программы.

· Restart (Ctrl+Shift+F5) - перезапустить программу. Выполнение программы будет прервано и запустится заново;

· Show Next Statement (Alt + Num *) - показать следующий оператор, т.е переместить курсор редактора кода в курсор пошагового выполнения;

· Step Into (F11) - выполнить очередной оператор. Если это метод, то перейти в начало этого метода, чтобы начать отладку;

· Step Over (F10) - выполнить очередной оператор. Если это метод, то он будет полностью выполнен, т.е. курсор выполнения не будет входить внутрь метода;

· Step out (Shift + F11) - выйти из метода.

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

· Autos;

· Locals;

· Watch;

· Immediate;

· Threads;

· Parallel Task;

· Parallel Stacks.

Окно Autos

Окно Autos (Рис. 19.8) используется для того чтобы, просматривать значения, связанные с той строкой кода, на которой находится курсор отладки. Это окно отображает значения всех переменных и выражений, имеющихся в текущей выполняющейся строке кода или в предыдущей строке кода. Содержит следующие столбцы:

· Name - название переменной;

· Value - значение переменной;

· Type - тип переменной.


увеличить изображение
Рис. 19.8.Окно Autos

Окно Locals

Окно Locals (Рис. 19.9) отображает все переменные и их значения для текущей области видимости отладчика, что дает представление обо всех переменных, которые используются в текущем выполняющемся методе. Переменные в этом окне автоматически настраиваются отладчиком. Данное окно содержит следующие столбцы:

· Name - название переменной;

· Value - значение переменной;

· Type - тип переменной.


увеличить изображение
Рис. 19.9.Окно Locals

Окно Watch

Окно Watch или окно контрольных значений (Рис. 19.10) - позволяет настраивать собственный список переменных и выражений, которые необходимо отслеживать. Всего доступно четыре окна Watch (Watch 1, Watch 2, Watch 3 и Watch 4), что позволяет выделить в четыре списка переменные и выражения, данную возможность удобно использовать в том случае, если каждый список относится к отдельной области видимости приложения. Переменные или выражение в окно Watch добавляются или из редактора кода, или из окна QuickWatch. Если нужно добавить в окно Watch элемент из редактора кода, то нужно выделить нужную переменную или выражение, щелкнуть по ней правой кнопкой мыши и выбирать пункт Add Watch. Также можно перетаскивать, с помощью мыши, выделенный элемент в окно Watch. Данное окно содержит следующие столбцы:

· Name - название переменной;

· Value - значение переменной;

· Type - тип переменной.


Рис. 19.10.Окно Watch

Окно Immediate

Окно Immediate или непосредственное выполнение (Рис. 19.11) - предназначено для ручного ввода и выполнения команд. Это окно появляется автоматически при прерывании работы программы в точках останова программы. Для выполнения команды или оператора необходимо написать команду и нажать клавишу <Enter>.


Рис. 19.11.Окно Immediate

Окно Threads

Окно Threads (Рис. 19.12) - позволяет просматривать и управлять всеми запущенными потокам на различных этапах отладки приложения.


увеличить изображение
Рис. 19.12.Окно Threads

По умолчанию в таблице перечисляются все потоки приложения, но можно фильтровать этот список, чтобы в нем показывались только нужные потоки. В каждом столбце содержится свой тип сведений. Сведения о столбцах окна Threads представлены в Табл. 19.3.

Таблица 19.3. Столбцы окна отладки Threads
Имя столбца Описание
Флаги Показывает, какие потоки помечены, и позволяет помечать потоки и снимать с них метки.
Значки Желтая стрелка указывает активный поток. Контур стрелки указывает поток, где выполнение было передано в отладчик. Белая стрелка указывает прерванную задачу, т.е. задачу, которая была текущей во время вызова отладчика. Значок паузы указывает поток, замороженный пользователем.
ID Столбец содержит идентификационные номера всех потоков.
Managed ID В столбце содержаться управляемые идентификационные номера управляемых потоков.
Category В данном столбце потоки классифицируются по категориям: потоки пользовательского интерфейса, обработчики удаленного вызова процедур (RPC) и рабочие потоки. Особая категория идентифицирует главный поток приложения.
Name Столбец, в котором для каждого потока указывается имя, если оно имеется, или значение <No Name>.
Location В данном столбце показывается, где поток выполняется. Можно развернуть это расположение, чтобы отобразить полный стек вызова для потока.
Priority Столбец содержит приоритет потока, назначенный системой каждому потоку.
Affinity Mask Дополнительный столбец, который обычно скрыт. В этом столбце показывается маска сходства процессора для каждого потока. В многопроцессорной системе маска сходства определяет, какой процессор, в каком потоке может работать.
Suspended Столбец содержит счетчик приостановок. Этот счетчик определяет, может ли поток выполняться.

Окно Parallel Task

Окно Parallel Task (Рис. 19.13) или окно параллельных задач - выглядит как окно Threads (потоки), за исключением того, что отображает сведения о каждой задаче или объекте task_handle, вместо сведений о каждом потоке. Как и потоки, задачи представляют асинхронные операции, которые могут выполняться параллельно, однако несколько задач могут выполняться в одном потоке.


Рис. 19.13.Окно Parallel Task

Сведения о столбцах окна Parallel Tasks представлены в Табл. 19.4.

Таблица 19.4. Столбцы окна Parallel Task
Имя столбца Описание
Флаги Показывает, какие задачи помечены, и позволяет помечать задачи и снимать с них метки.
Значки Рядом с текущей задачей отображается желтая стрелка. Текущая задача находится на самом верхнем уровне текущего потока. Белая стрелка указывает прерванную задачу, т.е. задачу, которая была текущей во время вызова отладчика. Значок паузы указывает задачу, замороженную пользователем.
ID Столбец содержит предоставленный системой номер задачи. В машинном коде этот номер является адресом задачи.
Status Столбец отображает текущее состояние задачи: · Запланированная задача - это задача, которая еще не выполнялась и, следовательно, не имеет стека вызова, назначенного потока и других соответствующих сведений. · Запущенная задача - это задача, которая выполняла код, пока не была прервана в отладчике. · Находящаяся в ожидании задача - это задача, заблокированная вследствие ожидания сигнала события, освобождения блокировки или завершения другой задачи. · Заблокированная задача - это находящаяся в ожидании задача, чей поток заблокирован другим потоком.
Location Столбец, который отображает текущее расположение в стеке вызова задачи.
Task Столбец отображает исходный метод и аргументы, которые были переданы в задачу при ее создании.
Parent Столбец содержит идентификатор задачи, создавшей данную задачу. Если эта ячейка пуста, то у задачи нет родительской задачи. Это применимо только для управляемых программ.
Thread Assignment Данный столбец содержит идентификатор и имя потока, в котором запущена задача.
AppDomain Столбец содержит информацию о домене приложения (для управляемого кода), в котором выполняется задача.
task_group Столбец отображает информацию о адрес объекта task_group, который запланировал задачу. Для асинхронных агентов и упрощенных задач этот столбец содержит значение 0.







Дата добавления: 2017-06-02; просмотров: 578;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.012 сек.