Признаюсь честно, я и сам достаточно долго просто выводил что-то в консоль, пытаясь понять, что пошло не так. Я понимал, что использовать breakpoint быстрее и продуктивнее, даёт больше возможностей, ну и в целом выглядит солиднее, но по-прежнему пользовался консолью.
Пример использования console.log для отладки.
В общем, эта статья должна облегчить ежедневную работу таким, как я, и тем, кто только постигает науку отладки JS. Здесь не будет хардкора, только самые основы.
Что такое breakpoint?
Во многих языках программирования, если не во всех, существует специальная команда, которая останавливает выполнение кода. При этом доступно состояние программы в момент остановки. Чуть более подробно можно почитать на Википедии.
Как можно увидеть на скриншоте или на работающем прототипе (только не забудьте открыть Chrome DevTools), приложение не просто открылось в нужный момент, но и подсветило значение переменных, с которыми можно работать, например, введя их в консоль или как-то поработав с их значениями.
Но у этого способа установки breakpoint есть один очевидный недостаток: каждый раз при попытке что-то отобразить придётся пересобирать приложение. Поэтому в Chrome DevTools есть другой способ.
Установка breakpoint при помощи Chrome DevTools.
Остановка в случае изменения DOM
Теперь давайте рассмотрим пример посложнее. Допустим, на нашей странице что-то происходит и появляется ошибка. Чтобы разобраться, необходимо в инспекторе выбрать DOM-узел, за которым вы хотите наблюдать, и после этого кликнуть правой кнопкой «Break on => Subtree modification». После чего код остановится и подсветит нужную нам функцию.
Установка breakpoint на изменение DOM-элемента.
Типы точек остановки на DOM-узлах:
Остановка после XHR/Fetch-ответа
Если что-то идет не так после ответа от сервера, то на этот случай есть инструмент для создания точки остановки. Перейдите во вкладку Sources и в правой колонке в раскрывающемся списке “XHR/Fetch breakpoint” добавьте новое условие для остановки.
Установка breakpoint на XHR/Fetch-событие.
События с условиями
Чтобы не останавливать код каждый раз, когда интерпретатор доходит до точки остановки, можно добавить условия срабатывания breakpoint. Это чрезвычайно удобно делать в цикле.
Добавление условия к срабатыванию точки остановки.
А что дальше?
Прелесть использования точки остановки вместо console.log заключается не только в том, что можно получить исчерпывающую информацию о состоянии в месте остановки, но и в том, что исполнение программы можно продолжить по шагам. Для этого необходимо использовать правую панель во вкладке Sources.
Панель управления отладкой.
При помощи этой панели можно:
Заключение
На этом инструменты отладки в Chrome DevTools не заканчиваются, это только вершина айсберга. Несмотря на то, что поначалу использовать breakpoint кажется сложнее, чем вывод информации в консоль, в долгосрочной перспективе это сэкономит много времени и откроет большие возможности.
Если тема работы с Chrome DevTools будет интересна, я могу написать ещё одну статью с более хардкорными практиками и методами. А на этом у меня всё, спасибо.
Александр Александров про тренды и технологии тестирования, про влияние Covid19 на рынок QA
Продолжу хвастаться статусом книги.
Онлайн-тренинги
Что пишут в блогах (EN)
Разделы портала
Про инструменты
Автор: Кристин Джеквони (Kristin Jackvony)
Оригинал статьи
Перевод: Ольга Алифанова
Современные команды разработки ПО размывают традиционные границы между разработчиком и тестировщиком. Это означает, что разработчики все сильнее вовлекаются в тест-автоматизацию на всех уровнях пирамиды, а тестировщики все глубже погружаются во внутреннюю механику приложения. Разве не здорово бы было найти причины багов JavaScript, а не просто сообщать о них? Это можно сделать при помощи брейкпойнтов инструментов разработчика Chrome!
В этой статье я шаг за шагом проведу вас по использованию Chrome Dev Tools для дебага. Я узнала об этом из этой полезной статьи в блоге Google, но я буду использовать пример приложения, чтобы вы смогли попробовать различные методы самостоятельно.
Важно отметить, что для использования брейкпойнтов вам понадобится локальная установка приложения. Нельзя просто взять релизную версию и дебажить ее. Статья покажет вам, как запустить React-приложение локально, и вы можете уточнить у своих разработчиков, как сделать это с вашим рабочим приложением.
Чтобы следовать моим инструкциям, нужно установить Node.js и Git. Затем клонируйте этот репозиторий. Если вы никогда не клонировали репозитории, инструкции здесь. В этом репозитории находится очень простое приложение-счетчик, которое можно использовать для, скажем, добавления товаров в корзину. Оно не ахти какое сложное, но делает достаточно для проверки работы брейкпойнтов.
После клонирования репозиторий сделайте вот что:
cd counter-app (вы перейдете в папку приложения)
npm install (получение всех необходимых для запуска пакетов, и билд приложения)
npm start (запуск приложения)
Ваше приложение откроется в Chrome и будет выглядеть так:
Затем откройте инструменты разработчика, используя меню многоточия в правом верхнем углу Chrome. Из этого меню выберите «Дополнительные инструменты», а затем «Инструменты разработчика». Они откроются в браузере и будут выглядеть примерно так:
Мы готовы начинать! Мы установим каждый тип брейкпойнта, посмотрим на его работу, нажмем кнопку «Продолжить выполнение скрипта», а затем очистим брейкпойнт. Кнопка «Продолжить выполнение скрипта» (“Resume script execution”) находится наверху самой правой панели и выглядит так:
Для очистки брейкпойнта просто нажмите на него правой клавишей и выберите «Убрать брейкпойнт». Приступим!
Брейкпойнт строки кода
Этот брейкпойнт используется чаще всего. Код приложения, выполняясь и доходя до этой строчки, приостановится. Эту паузу можно использовать для анализа текущего состояния приложения – начиная с видимого состояния и заканчивая значениями переменных.
Если вкладка «Источники» («Sources») еще не выбрана в верхней части инструментов разработчика, выберите ее. Теперь посмотрите в левую часть панели инструментов разработчика, найдите папку src, и кликните на файл App.js в этой папке. Он откроется в центральной панели инструментов разработчика.
Найдите строку 17 и кликните на ее номер. Номер подсветится синим, вот так:
Эта линия кода находится в функции handleIncrement, которая вызывается, когда вы нажимаете один из плюсиков в приложении. Нажмите на плюсик. Вы увидите, как эта строка подсветится, и на правой панели появится сообщение «Пауза на брейкпойнте». Стоя на паузе, вы можете посмотреть на секции Call stack и Scope, чтобы увидеть, что сейчас происходит в приложении.
Не забудьте удалить брейкпойнт на строке 17 и нажать на кнопку Resume, прежде чем перейти к следующему разделу!
Брейкпойнт на условной строке кода
Теперь давайте рассмотрим брейкпойнт на условной строке кода. Этот брейкпойнт сработает только тогда, когда выполнено определенное условие. Кликните правой клавишей на 19 строке кода App.js и выберите «Добавить условный брейкпойнт» (“Add conditional breakpoint”). Брейкпойнт будет добавлен, и появится всплывающее окно для добавления условия. Добавьте условие index === 0 и нажмите на кнопку возврата или ввода.
Теперь, когда брейкпойнт установлен, посмотрим на него в действии. Если вы ничего не нажимали после прошлого упражнения, то у вас есть счетчик, установленный на цифре 1. Снова нажмите на кнопку с плюсом. Код не остановится на брейкпойнте, потому что счетчик стоит на единице. Нажмите на кнопку с минусом, чтобы вернуть счетчик на ноль. Снова нажмите на плюс. На этот раз код остановится на брейкпойнте, потому что текущее состояние счетчика на строке 19 – это ноль.
Не забудьте удалить брейкпойнт на строке 19 и нажать на кнопку Resume, прежде чем перейти к следующему разделу!
DOM-брейкпойнт
Можно также установить брейкпойнт напрямую в DOM. Для этого сначала нажмем на вкладку Elements на верхней панели инструментов разработчика. Измените верхний счетчик с единицы на ноль. Теперь нажмите на этот нулевой счетчик правой кнопкой и выберите «Inspect». Центральная панель инструментов разработчика перейдет к секции DOM с этим счетчиком и подсветит ее. Нажмите на подсвеченной секции правой кнопкой, выберите «Break on», а затем «Attribute modifications». Когда счетчик перейдет с нуля на единицу, он меняет атрибут (в данном случае цвет), и выбирая модификации атрибута, мы говорим коду остановиться, как только изменится атрибут иконки.
Нажмите на плюс, и вы увидите, как код остановится на брейкпойнте, потому что цвет счетчика готов измениться с желтого на голубой. Нажмите кнопку «Resume execution», код продолжит выполнение, счетчик изменится на единицу (и станет голубым). Снова нажмите на кнопку с плюсом, и код не остановится на брейкпойнте, потому что при переходе от 1 к 2 цвет не меняется. Но если дважды нажать на минус и вернуться к нулю, код снова остановится на брейкпойнте, потому что цвет счетчика готов измениться.
Не забудьте удалить брейкпойнт и нажать на кнопку Resume, прежде чем продолжать!
Это довольно длинная статья, а у нас впереди еще четыре брейкпойнта. О них я расскажу в следующий раз.
Урок №26. Отладка программ: степпинг и точки останова
Обновл. 21 Июл 2021 |
Как ни странно, программирование может быть сложным и ошибок может быть очень много. Ошибки, как правило, попадают в одну из двух категорий: синтаксические или семантические/смысловые.
Типы ошибок
Синтаксическая ошибка возникает, когда вы пишете код, который не соответствует правилам грамматики языка C++. Например, пропущенные точки с запятой, необъявленные переменные, непарные круглые или фигурные скобки и т.д. В следующей программе есть несколько синтаксических ошибок:
К счастью, компилятор ловит подобные ошибки и сообщает о них в виде предупреждений или ошибок.
Семантическая ошибка возникает, когда код является синтаксически правильным, но делает не то, что задумал программист.
Иногда это может привести к сбою в программе, например, если делить на ноль:
Иногда это может привести к неверным результатам:
Либо делать вообще не то, что нужно:
К сожалению, компилятор не ловит подобные ошибки, так как он проверяет только то, что вы написали, а не то, что вы хотели этим сделать.
В примерах, приведенных выше, ошибки довольно легко обнаружить. Но в большинстве программ (в которых больше 40 строк кода), семантические ошибки увидеть с помощью простого просмотра кода будет не так-то и легко.
И здесь нам на помощь приходит отладчик.
Отладчик
Отладчик (или «дебаггер», от англ. «debugger») — это компьютерная программа, которая позволяет программисту контролировать выполнение кода. Например, программист может использовать отладчик для выполнения программы пошагово, последовательно изучая значения переменных в программе.
Старые дебаггеры, такие как GDB, имели интерфейс командной строки, где программисту приходилось вводить специальные команды для старта работы. Современные дебаггеры имеют графический интерфейс, что значительно упрощает работу с ними. Сейчас почти все современные IDE имеют встроенные отладчики. То есть, вы можете использовать одну среду разработки как для написания кода, так и для его отладки (вместо постоянного переключения между разными программами).
Базовый функционал у всех отладчиков один и тот же. Отличаются они, как правило, тем, как этот функционал и доступ к нему организованы, горячими клавишами и дополнительными возможностями.
Примечание: Перед тем как продолжить, убедитесь, что вы находитесь в режиме конфигурации «Debug». Все скриншоты данного урока выполнены в Visual Studio 2019.
Степпинг
Степпинг (англ. «stepping») — это возможность отладчика выполнять код пошагово (строка за строкой). Есть три команды степпинга:
Команда «Шаг с заходом»
Команда «Шаг с обходом»
Команда «Шаг с выходом»
Мы сейчас рассмотрим каждую из этих команд в индивидуальном порядке.
Команда «Шаг с заходом»
Команда «Шаг с заходом» (англ. «Step into») выполняет следующую строку кода. Если этой строкой является вызов функции, то «Шаг с заходом» открывает функцию и выполнение переносится в начало этой функции.
Давайте рассмотрим очень простую программу:
Как вы уже знаете, при запуске программы выполнение начинается с вызова главной функции main(). Так как мы хотим выполнить отладку внутри функции main(), то давайте начнем с использования команды «Шаг с заходом».
В Visual Studio, перейдите в меню «Отладка» > «Шаг с заходом» (либо нажмите F11 ):
Если вы используете другую IDE, то найдите в меню команду «Step Into/Шаг с заходом» и выберите её.
Когда вы это сделаете, должны произойти две вещи. Во-первых, так как наше приложение является консольной программой, то должно открыться консольное окно. Оно будет пустым, так как мы еще ничего не выводили. Во-вторых, вы должны увидеть специальный маркер слева возле открывающей скобки функции main(). В Visual Studio этим маркером является жёлтая стрелочка (если вы используете другую IDE, то должно появиться что-нибудь похожее):
Стрелка-маркер указывает на следующую строку, которая будет выполняться. В этом случае отладчик говорит нам, что следующей строкой, которая будет выполняться, — будет открывающая фигурная скобка функции main(). Выберите «Шаг с заходом» еще раз — стрелка переместится на следующую строку:
Это значит, что следующей строкой, которая будет выполняться, — будет вызов функции printValue(). Выберите «Шаг с заходом» еще раз. Поскольку printValue() — это вызов функции, то мы переместимся в начало функции printValue():
Теперь выберите «Шаг с обходом» (F10). Вы увидите число 5 в консольном окне.
Выберите «Шаг с заходом» еще раз для выполнения закрывающей фигурной скобки printValue(). Функция printValue() завершит свое выполнение и стрелка переместиться в функцию main(). Обратите внимание, в main() стрелка снова будет указывать на вызов printValue():
Может показаться, будто отладчик намеревается еще раз повторить цикл с функцией printValue(), но в действительности он нам просто сообщает, что он только что вернулся из этой функции.
Выберите «Шаг с заходом» два раза. Готово, все строки кода выполнены. Некоторые дебаггеры автоматически прекращают сеанс отладки в этой точке. Но Visual Studio так не делает, так что если вы используете Visual Studio, то выберите «Отладка» > «Остановить отладку» (или Shift+F5 ):
Таким образом мы полностью остановили сеанс отладки нашей программы.
Команда «Шаг с обходом»
Как и команда «Шаг с заходом», команда «Шаг с обходом» (англ. «Step over») позволяет выполнить следующую строку кода. Только если этой строкой является вызов функции, то «Шаг с обходом» выполнит весь код функции в одно нажатие и возвратит нам контроль после того, как функция будет выполнена.
Примечание для пользователей Code::Blocks: Команда «Step over» называется «Next Line».
Рассмотрим пример, используя следующую программу:
Использование точек останова в отладчике Visual Studio
Точки останова — это один из важнейших инструментов разработчика для выполнения отладки. Точки останова устанавливаются везде, где нужно приостановить выполнение отладчика. Например, вы хотите просмотреть состояние переменных кода или стек вызовов в определенной точке останова. Если вы пытаетесь разрешить предупреждение или проблему при использовании точек останова, см. раздел Устранение неполадок точек останова в отладчике Visual Studio.
Если вам известна задача или проблема, которую вы пытаетесь решить, но вы не знаете, какой тип точки останова следует использовать, см. статью Часто задаваемые вопросы. Поиск нужной функции отладки в Visual Studio.
Задание точек останова в исходном коде
Чтобы задать точку останова в исходном коде, щелкните в крайнем левом поле рядом со строкой кода. Можно также выбрать строку и нажать клавишу F9, выбрать команду Отладка > Переключить точку останова или щелкнуть правой кнопкой мыши и выбрать команду Точка останова > Вставить точку останова. В месте установки точки останова в левом поле появится красная точка.
При отладке выполнение приостанавливается в точке останова до выполнения кода в этой строке. Символ точки останова отображается с желтой стрелкой.
В точке останова в следующем примере значение testInt по-прежнему равно 1. Таким образом, значение не изменилось с момента инициализации переменной (значение 1), так как инструкция, выделенная желтым, еще не была выполнена.
Когда отладчик останавливается в точке останова, можно просмотреть текущее состояние приложения, включая значения переменных и стека вызова.
Ниже приведены некоторые общие инструкции по работе с точками останова.
Точка останова представляет собой переключатель. Можно щелкнуть ее, нажать клавишу F9 или выбрать Отладка > Переключить точку останова, чтобы удалить или снова вставить ее.
Чтобы отключить точку останова, не удаляя ее, наведите указатель мыши на нее или щелкните ее правой кнопкой мыши и выберите Отключить точку останова. Отключенные точки останова отображаются как пустые точки в левом поле или окне Точки останова. Чтобы повторно включить точку останова, наведите указатель мыши на нее или щелкните ее правой кнопкой мыши и выберите Включить точку останова.
Задайте условия и действия, добавьте и измените метки или экспортируйте точку останова, щелкнув ее правой кнопкой мыши и выбрав нужную команду или наведя на нее курсор и нажав на значок Параметры.
Действия точки останова и точки трассировки
Точка трассировки — это точка останова, которая выводит сообщение в окно вывода. Точка трассировки может играть роль временного оператора трассировки в языке программирования и не приостанавливает выполнение кода. Вы создаете точку трассировки, задавая особое действие в окне Параметры точки останова. Подробные инструкции см. в разделе Использование точек трассировки в отладчике Visual Studio.
Условия точки останова
Можно управлять тем, где и когда выполняется точка останова, задавая условия. Условие может быть любым допустимым выражением, которое распознает отладчик. Дополнительные сведения о допустимых выражениях см. в разделе Выражения в отладчике.
Задание условия для точки останова.
Вы также можете щелкнуть правой кнопкой мыши в дальнем левом поле рядом со строкой кода и выбрать Вставить условную точку останова в контекстном меню.
Можно также задать условия в окне Точки останова, щелкнув правой кнопкой мыши точку останова и выбрав пункт Параметры, а затем Условия.
В раскрывающемся списке выберите Условное выражение, Количество обращений или Фильтр и задайте соответствующее значение.
Выберите Закрыть или нажмите клавиши CTRL+ВВОД, чтобы закрыть окно Параметры точки останова. Или в окне Точки останова выберите ОК, чтобы закрыть диалоговое окно.
Точки останова с установленными условиями отображаются с символом + в исходном коде и окне Точки останова.
Создание условного выражения
Если вы выбрали Условное выражение, можно выбрать одно из двух условий: Имеет значение true или При изменении. Выберите значение Имеет значение true, чтобы прервать выполнение при истинности выражения, или значение При изменении, если требуется прервать выполнение при изменении значения выражения.
В следующем примере задается применение точки останова, только если значение testInt равно 4:
В следующем примере задается применение точки останова, только если значение testInt меняется:
Для поля При изменении отладчик не обрабатывает первое вычисление условия как изменение, поэтому при первом вычислении выражения точка останова не сработает.
Использование идентификаторов объектов в условных выражениях (только C# и F#)
Иногда возникает необходимость наблюдать за поведением определенного объекта. Например, может потребоваться выяснить, почему объект был вставлен в коллекцию несколько раз. В C# и F# можно создавать идентификаторы объектов для определенных экземпляров ссылочных типов и использовать их в условиях точек останова. Идентификатор объекта создается службами отладки среды CLR и связан с объектом.
Создание идентификатора объекта
Установите точку останова в коде после создания объекта.
Запустите отладку и, когда выполнение приостановится на точке останова, выберите Отладка > Windows > Локальные (или нажмите клавиши CTRL + ALT + V, L), чтобы открыть окно Локальные.
Найдите конкретный экземпляр объекта в окне Локальные, щелкните его правой кнопкой мыши и выберите Сделать идентификатор объекта.
Добавьте новую точку останова в точке, которую нужно исследовать, например в точке добавления объекта в коллекцию. Щелкните правой кнопкой мыши точку останова и выберите пункт Условие.
Выполнение прервется в точке добавления объекта в коллекцию.
Чтобы удалить идентификатор объекта, щелкните правой кнопкой мыши переменную в окне Локальные и выберите пункт Удалить идентификатор объекта.
Идентификаторы объектов создают слабые ссылки и не предотвращают сборку мусора для объекта. Они действительны только в рамках текущего сеанса отладки.
Установка условия количества обращений
Если есть подозрение, что цикл в коде начинает неправильно вести себя после определенного числа итераций, можно установить точку останова для остановки выполнения после указанного количества обращений, вместо того чтобы многократно нажимать клавишу F5 для достижения этой итерации.
В разделе Условия в окне Параметры точки останова выберите Количество обращений, а затем укажите число итераций. В следующем примере задается выполнение точки останова при каждой второй итерации:
Задание условия фильтра
Вы можете ограничить точку останова, сделав ее срабатывание возможным лишь на определенных устройствах или в определенных процессах или потоках.
В разделе Условия в окне Параметры точки останова выберите Фильтр, а затем введите одно или несколько из следующих выражений.
Задание точек останова функции
Выполнение можно прерывать при вызове функции. Это полезно, например, если известно имя функции, но не ее расположение. Это также полезно, если у вас есть функции с одинаковым именем и вы хотите приостановить их все (например, перегруженные функции или функции в разных проектах).
Установка точки останова функции:
Выберите Отладка > Создать точку останова > Точка останова функции или нажмите клавиши CTRL + K, B.
Можно также выбрать Создать > Точка останова функции в окне Точки останова.
В диалоговом окне Новая точка останова функции заполните поле Имя функции.
Чтобы уточнить функцию, сделайте следующее.
Используйте полное имя функции.
Добавьте типы параметров перегруженной функции.
Пример: MethodA(int, string)
Используйте символ «!», чтобы указать модуль.
Используйте оператор контекста в машинном коде C++.
В раскрывающемся списке Язык выберите язык функции.
Нажмите кнопку ОК.
Задание точки останова функции по адресу памяти (только в машинном коде C++)
Установите точку останова после создания экземпляра класса.
Найдите адрес экземпляра (например, 0xcccccccc ).
Выберите Отладка > Создать точку останова > Точка останова функции или нажмите клавиши CTRL + K, B.
Задание точек останова в данных (.NET Core 3.0 или более поздней версии)
Точки останова в данных прерывают выполнение при изменении свойства конкретного объекта.
Задание точки останова в данных
В окне Видимые, Контрольные значения или Локальные щелкните правой кнопкой мыши свойство и выберите Прервать выполнение при изменении значения в контекстном меню.
Задание точек останова в данных (только машинный код C++)
Точки останова в данных приостанавливают выполнение, когда изменяется значение, хранящееся в указанном адресе памяти. Если значение только считывается, но не изменяется, выполнение программы не прерывается.
Задание точки останова в данных
В проекте C++ начните отладку и подождите, пока не будет достигнута точка останова. В меню Отладка выберите команду Создать точку останова > Точка останова в данных.
Можно также выбрать Создать > Точка останова в данных в окне Точки останова или щелкнуть правой кнопкой мыши элемент Видимые, Контрольные значения или Локальные и выбрать Прервать выполнение при изменении значения в контекстном меню.
В раскрывающемся списке Счетчик байтов введите количество байтов, за которыми должен наблюдать отладчик. Например, если выбрать 4, отладчик будет наблюдать за четырьмя байтами начиная с &avar и выполнит прерывание, если какой-либо из этих байтов изменит значение.
Точки останова в данных не работают при следующих условиях.
Точки останова в данных зависят от конкретных адресов памяти. Адрес переменной меняется между сеансами отладки, поэтому точки останова в данных автоматически отключаются в конце каждого сеанса отладки.
Если установить точку останова по данным на локальную переменную, точка останова остается включенной при завершении выполнения функции, но адрес памяти больше не применяется, поэтому поведение точки останова будет непредсказуемым. Если установить точку останова в данных на локальную переменную, рекомендуется удалить или отключить точку останова до окончания функции.
Добавление зависимой точки останова
Зависимые точки останова могут сработать только при условии срабатывания другой точки останова. Поэтому в сложном сценарии, например при отладке многопоточного приложения, вы можете настроить дополнительные точки останова после срабатывания определенной точки останова. Это упрощает отладку кода по часто используемым путям, например для игрового цикла или служебного API, так как точки останова в таких функциях можно настроить для включения только в случае вызова функции в определенной части приложения.
Чтобы задать зависимую точку останова, сделайте следующее:
Наведите указатель мыши на символ точки останова, щелкните значок Параметры, а затем выберите Включить только при срабатывании следующей точки останова в окне «Параметры точек останова».
В раскрывающемся списке выберите необходимую точку останова, от которой будет зависеть текущая точка останова.
Выберите Закрыть или нажмите клавиши CTRL+ВВОД, чтобы закрыть окно «Параметры точки останова». Или в окне «Точки останова» выберите ОК, чтобы закрыть диалоговое окно.
Чтобы задать зависимую точку останова, вы также можете воспользоваться контекстным меню по щелчку правой кнопкой мыши.
Добавление временной точки останова
Такая точка останова позволяет прервать выполнение кода только единожды. Отладчик Visual Studio приостанавливает выполняющееся приложение только один раз для этой точки, а после срабатывания немедленно удаляет ее.
Чтобы задать временную точку останова, сделайте следующее:
Чтобы задать временную точку останова, вы также можете воспользоваться контекстным меню по щелчку правой кнопкой мыши.
Или просто воспользуйтесь клавишами F9+SHIFT+ALT и установите временную точку останова в нужной строке.
Управление точками останова в окне «Точки останова»
Используйте окно Точки останова для просмотра всех точек останова в вашем решении и управления ими. Это централизованное расположение особенно полезно в больших решениях или сложных сценариях отладки, в которых точки останова являются критически важными.
В окне Точки останова можно выполнять поиск, сортировку, фильтрацию, включение, отключение или удаление точек останова. Можно также задать условия и действия или добавить новую функцию или точку останова в данных.
Чтобы открыть окно Точки останова, выберите Отладка > Windows > Точки останова или нажмите клавиши CTRL+ALT+B.
Чтобы выбрать столбцы для отображения в окне Точки останова, выберите Показать столбцы. Выберите заголовок столбца, чтобы отсортировать список точек останова по этому столбцу.
Метки точки останова
Используйте метки для сортировки и фильтрации списка точек останова в окне Точки останова.
Экспорт и импорт точек останова
Чтобы сохранить или предоставить состояние и расположение точек останова, их можно экспортировать или импортировать.
Установка точек останова из окон отладчика
Можно также задать точки останова из окон отладчика Стек вызовов и Дизассемблирование.
Задание точки останова в окне стека вызовов
Чтобы прервать выполнение на инструкции или строке, к которой возвращается вызывающая функция, установите соответствующую точку останова в окне Стек вызовов.
Задание точки останова в окне стека вызовов
Чтобы открыть окно Стек вызовов, необходимо приостановить процесс отладки. Выберите Отладка > Windows > Стек вызовов или нажмите клавиши CTRL+ALT+C.
В окне Стек вызовов щелкните правой кнопкой мыши вызывающую функцию и выберите Точка останова > Вставить точку останова или нажмите F9.
В левом поле стека вызовов рядом с именем вызова функции появится символ точки останова.
В окне Точки останова точка останова стека вызова будет представлена как адрес с областью памяти, который соответствует следующей исполняемой инструкции в функции.
Отладчик приостанавливает выполнение на этой инструкции.
Более подробную информацию о стеке вызовов см. в разделе Практическое руководство. Использование окна стека вызова.
Сведения о визуальном отслеживании точек останова во время выполнения кода см. в разделе Сопоставление методов в стеке вызовов при отладке.
Задание точки останова в окне дизассемблирования
Чтобы открыть окно Дизассемблирование, необходимо приостановить процесс отладки. Выберите Отладка > Windows > Дизассемблирование или нажмите клавиши CTRL+ALT+D.
В окне Дизассемблирование щелкните в левом поле инструкции, на которой нужно прервать выполнение. Можно также выбрать строку и нажать клавишу F9 или щелкнуть правой кнопкой мыши и выбрать Точка останова > Вставить точку останова.























