Точка останова обнаружена точка останова что это такое
Перейти к содержимому

Точка останова обнаружена точка останова что это такое

  • автор:

Откуда взялось понятие «Точка останова» (почему не точка остановКИ например)

В программировании, то́чка остано́ва (англ. breakpoint) — это преднамеренное прерывание выполнения программы, при котором выполняется вызов отладчика (одновременно с этим, программа сама может использовать точки останова для своих нужд) . После перехода к отладчику, программист может исследовать состояние программы (логи, состояние памяти, регистров процессора, стека и т. п.) , с тем чтобы определить, правильно ли ведёт себя программа. После остановки в отладчике, программа может быть завершена либо продолжена с того же места где произошёл останов.

На практике, точка останова определяется как одно или несколько условий, при которых происходит прерывание программы. Наиболее часто используется условие останова при переходе управления к указанной инструкции программы (instruction breakpoint). Другое условие останова — операция чтения, записи или изменения указанной ячейки или диапазона ячеек памяти (data breakpoint или watchpoint).

Многие процессоры имеют аппаратную поддержку точек останова (обычно, только для instruction breakpoint и watchpoint). При отсутствии такой аппаратной поддержки отладчики используют программные точки останова.

Документация

Отладчик позволяет, вы, чтобы задать останавливающиеся точки вызвали точки останова в симуляции. Можно затем запустить симуляцию от точки останова до точки останова, с помощью отладчика continue команда. Отладчик позволяет вам задать два типа точек останова: безусловный и условный. Безусловная точка останова происходит каждый раз, когда симуляция достигает метода, который вы задали ранее. Условная точка останова происходит, когда условие, которое вы задали заранее, возникает в симуляции.

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

Примечание

Когда вы останавливаете симуляцию в точке останова MATLAB ® S-функция в отладчике, чтобы выйти из MATLAB, необходимо сначала выйти из отладчика.

Установка безусловных точек останова

Можно установить безусловные точки останова от:

  • Панель инструментов Debugger
  • Панель Цикла симуляции
  • Командное окно продукта MATLAB (только режим командной строки)
Установка точек останова из панели инструментов отладчика

Включить кнопку Breakpoint,

  1. Симулируйте модель.
  2. Нажмите кнопку Step over current method до simulationPhase подсвечен.
  3. Нажмите кнопку Step into current method.

Отладчик отображает имя выбранного блока в панели точек Пропуска/Отображения панели Точек останова.

Примечание

Нажатие кнопки Breakpoint на панели инструментов устанавливает точки останова на вызовах методов блока в главных временных шагах.

Можно временно отключить точки останова на блоке путем снятия флажка в столбце точек останова панели. Очистить точки останова на блоке и удалить его запись из панели,

  1. Выберите запись.
  2. Нажмите кнопку Remove selected point на панели.

Примечание

Вы не можете установить точку останова на виртуальном блоке. Виртуальный блок является чисто графическим: это указывает на группировку или отношение среди вычислительных блоков модели. Отладчик предупреждает вас, при попытке установить точку останова на виртуальном блоке. Можно получить список невиртуальных блоков модели, с помощью slist команда (см. Отображение Невиртуальных Блоков Модели).

Установка точек останова от панели цикла симуляции

Чтобы установить точку останова при конкретном вызове метода, отображенного в панели Цикла Симуляции, установите флажок рядом с именем метода в столбце точки останова панели.

Чтобы очистить точку останова, снимите флажок.

Установка точек останова из командного окна

В режиме командной строки используйте break и bafter команды, чтобы установить точки останова прежде или после заданного метода, соответственно. Используйте clear команда к ясным точкам останова.

Установка условных точек останова

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

или следующие команды (в режиме командной строки), чтобы установить условные точки останова.

На шаге времени симуляции

В исправимой ошибке в модели

При вхождении потери значимости или переполнения ( NaN ) или бесконечный ( Inf Значение

Когда симуляция достигает состояния, которое определяет размер шага симуляции

Когда нулевое пересечение находится между шагами времени симуляции

Установка точек останова на временных шагах

Чтобы установить точку останова на временном шаге, введите время в Пропуск отладчика в поле времени (режим GUI) или введите время с помощью tbreak команда. Это заставляет отладчик останавливать симуляцию в Outputs.Major метод модели на первом временном шаге, который следует за требуемым временем. Например, запуск vdp в режиме отладки и вводе команд

tbreak 2 continue

заставляет отладчик останавливать симуляцию в vdp.Outputs.Major метод временного шага 2.078 как обозначено выходом continue команда.

%----------------------------------------------------------------% [Tm = 2.034340153847549 ] vdp.Outputs.Minor (sldebug @37):
Повреждение на неличных значениях

Выбирание опции значений NaN отладчика или ввод nanbreak команда заставляет симуляцию останавливаться, когда вычисленное значение бесконечно или вне области значений значений, которая поддерживается машиной, запускающей симуляцию. Эта опция полезна для точного определения вычислительных ошибок в модели.

Повреждение на ограничивающих шагах неродного размера

Выбор размера Шага, ограниченного опцией состояния или ввод xbreak команда заставляет отладчик останавливать симуляцию, когда модель использует решатель переменного шага, и решатель сталкивается с состоянием, которое ограничивает размер шагов, которые это может сделать. Эта команда полезна в отладке моделей, которые, кажется, требуют, чтобы чрезмерное количество шагов времени симуляции решило.

Повреждение при нулевых пересечениях

Выбирание Нулевой опции пересечений или ввод zcbreak команда заставляет симуляцию останавливаться, когда непроизведенное нулевое пересечение обнаруживается в модели, которая включает блоки, где нулевые пересечения могут возникнуть. После остановки, ID, типа и имени блока, в котором было обнаружено нулевое пересечение, отображен. Блок ID ( s:b:p ) состоит из системного индекса s , индекс блока b , и индекс порта p разделенный двоеточиями (см. ID Блока).

Например, устанавливая пропуск пересечения нулем в начале выполнения zeroxing модель в качестве примера,

>> sldebug zeroxing %-------------------------------------------------------------- % [TM = 0 ] zeroxing.Simulate (sldebug @0): >> zcbreak Break at zero crossing events : enabled

и продолжение симуляции

(sldebug @0): >> continue

результаты в пересечении нулем повреждаются в

Interrupting model execution before running mdlOutputs at the left post of (major time step just before) zero crossing event detected at the following location: 6[-0] 0:5:2 Saturate 'zeroxing/Saturation' %----------------------------------------------------------------% [TzL= 0.3435011087932808 ] zeroxing.Outputs.Major (sldebug @16): >>

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

Повреждение при ошибках решателя

Выбор отладчика опция Solver Errors или ввод ebreak команда заставляет симуляцию останавливаться, если решатель обнаруживает исправимую ошибку в модели. Если вы не устанавливаете или отключаете эту точку останова, решатель восстанавливается с ошибки и возобновляет симуляцию, не уведомляя вас.

Связанные примеры

  • Запустите отладчик Simulink
  • Запустите симуляцию
  • Отобразите информацию о симуляции
  • Отобразите информацию о модели
  • Запустите режим Accelerator с отладчиком Simulink

Больше о

  • Графический интерфейс пользователя отладчика
  • Интерфейс командной строки отладчика
  • Отладчик онлайн помогает

Не срабатывает точка остановки программы

проблема возникает только с Debug , c Release все хорошо. С чем это связано и как можно это исправить?

Отслеживать
задан 27 дек 2016 в 17:19
1,840 2 2 золотых знака 23 23 серебряных знака 41 41 бронзовый знак

Можете показать код? И показать на нём где пытаетесь поставить точку? какие горячие клавиши нажимаете для отладки? и можно даже прикрепить скриншот с ошибкой (помимо уже указанной цитаты)

27 дек 2016 в 17:26

Бывает, что в конце рабочего дня пытаешься отлаживаться в конфигурации Release вместо Debug — это одна из возможных причин 🙂

27 дек 2016 в 17:27

А что за модуль? Может, вы используете не ту библиотеку, или не стоите её из исходников, а подключаете скомпилированную?

27 дек 2016 в 17:28

Обработчик MouseDown ImageBox’а. Но точки не срабатывают в любом месте. Сторонних библиотек не подключаю

27 дек 2016 в 17:50
вероятно Вам нужно вот эта msdn.microsoft.com/ru-ru/library/cc667410.aspx
27 дек 2016 в 22:02

4 ответа 4

Сортировка: Сброс на вариант по умолчанию

На будущее — может пригодится. У меня, судя по всему, не совпадали версии .NetFramework в отлаживаемом проекте-библиотеке и в дополнительно подключенном к нему. Поэтому я не мог провалиться на отладку в этот дополнительный проект-библиотеку.

Сначала отладка проваливалась в дополнительный проект-библиотеку, но потом что-то случилось и настал капут. Я и заново подключал этот дополнительный проект, и чистил папку Debug , и искал какие-либо настойки отладчика, и сравнивал файлы .csproj на предмет существенных различий, и колупался в главном .sln — никакого эффекта.

Потом в свойствах проекта в разделе «Приложение» я поставил одинаковые версии .NetFramework и точки останова заработали.

Отслеживать
2,520 1 1 золотой знак 16 16 серебряных знаков 30 30 бронзовых знаков
ответ дан 21 ноя 2017 в 11:20

была аналогичная проблема, не работала точка останова (писало ошибка C4715) проблема оказалась в том что после создания проекта я переименовал корневую папку. после того как скопировал все содержимое и проверил код в другом файле — точка останова заработала.

Отслеживать
ответ дан 29 мар 2018 в 1:29
Nikolai Pavlov Nikolai Pavlov

У меня выводило такое же сообщение при поставке точки останова.

Оказалось, что при сборке у меня выдавало следующие сообщение (даже не смотря на то что оно компилировалось) :

1>cl : командная строка warning D9007: для "/Gm" требуется "/Zi или /ZI"; параметр пропущен 

Поставил в свойствах проекта флаг /ZI — и точки останова заработали.

Точки останова

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

Включенная точка останова приводит к приостановке выполнения модели при достижении ею этой точки останова. Включенные точки останова отображаются с помощью голубых кружков [].

Выключенная точка останова не приводит к остановке выполнения модели. Выключенные точки останова рисуются белыми кружками [].

Точки останова отображаются в вертикальной линейке в левой части редакторов кода и кодовых и динамических свойств элементов модели, а также в панели Точки останова.

Панель Точки останова

Панель Точки останова отображает список всех точек останова, установленных пользователем в открытых моделях.

Если вы сделаете двойной щелчок по точке останова в этом списке, то AnyLogic откроет местоположение этой точки в панели свойств или в редакторе Java кода. Вы можете включать и выключать точки останова, удалять их, добавлять новые, а также считать количество случаев выполнения строк кода с установленными на них точками останова во время выполнения модели.

Панель Точки останова

Чтобы открыть/закрыть панель Точки останова

  1. Выберите Вид >Точки останова из главного меню.

Вы можете управлять точками останова с помощью расположенных в верхнем правом углу панели Точки останова кнопок панели инструментов:

Команда Действие
Показать строку точки останова Открывает Java редактор и выделяет в нем строку кода, на которой установлена точка останова.
Если точка останова была изначально установлена в коде Java класса или интерфейса, то код этого класса/интерфейса будет открыт в Java редакторе, и в нем будет выделена соответствующая строка.
Если точка останова была установлена в свойствах какого-то элемента модели, то в редакторе будет открыт код, сгенерированный для типа агента, на чьей диаграмме находится элемент с установленной точкой останова. В этом коде будет выделена строка, соответствующая этой точке.
Показать точку останова в панели Свойства Выделяет строку, содержащую точку останова, в панели Свойства.
Редактировать точку останова Открывает диалоговое окно Свойства для, в котором можно отредактировать свойства выбранной в данный момент точки останова.
Удалить точку останова Удаляет выделенную в данный момент точку останова.

Добавление точек останова

Вы можете поставить точку останова на любую выполняемую строку кода вашей модели.

Чтобы добавить точку останова

  1. В редакторе кода щелкните правой кнопкой мыши по вертикальной линейке слева от той строки кода, на которую вы хотите поставить точку останова, и выберите Переключить точку останова из контекстного меню. Или же вы можете сделать двойной щелчок мышью — результат будет тот же. В панели Свойства перед выполнением этих действий необходимо поместить курсор в соответствующем поле кода. В вертикальной линейке появится метка новой точки останова. Она будет находиться слева от той строки, для которой была установлена точка останова.

Также новая точка останова появится в списке, отображенном в панели Точки останова.

Пока точка останова будет включена, выполнение потока модели будет приостанавливаться перед выполнением этой строки кода. Отладчик будет выбирать приостановленный поток и отображать методы этого потока. В редакторе кода будет подсвечена линия кода с установленной точкой останова.

Удаление точек останова

Если вам больше не нужно использовать для отладки какую-либо точку останова, вы можете ее удалить.

Чтобы удалить точку останова

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

Вы также можете удалить точку останова из панели Точки останова. Щелкните правой кнопкой мыши по той точке останова, которую вы хотите удалить, и выберите Удалить точку останова из контекстного меню.

Если вы обнаружите, что слишком часто добавляете и удаляете точку останова в одном и том же месте модели, то скорее всего вам будет удобнее просто включать и отключать эту точку, делая ее временно неактивной.

Включение и отключение точек останова

При необходимости вы можете включать и отключать точки останова.

Когда точка останова включена, выполнение потока модели будет приостанавливаться перед выполнением соответствующей строки кода. Отладчик будет выбирать приостановленный поток и отображать методы этого потока. В редакторе кода будет подсвечена линия кода с установленной точкой останова.

Когда точка останова отключена, ее наличие не влияет на выполнение потока, и при достижении этой точки останова он не приостанавливается.

Чтобы отключить точку останова

  1. Щелкните в панели Свойства по той строке, где установлена точка останова.
  2. Нажмите Ctrl + J (macOS: Cmd + J ), чтобы открыть редактор кода. В редакторе будет выделена строка кода, соответствующая выделенной вами строке в панели Свойства.
  3. Щелкните правой кнопкой мыши по точке останова, которую вы хотите отключить, и выберите Выключить точку прерывания из контекстного меню. Метка точки останова будет теперь выглядеть как белый кружок, а соответствующий ей флажок в панели Точки останова будет сброшен.

Чтобы включить точку останова

  1. Щелкните в панели Свойства по той строке, где установлена точка останова.
  2. Нажмите Ctrl + J (macOS: Cmd + J ), чтобы открыть редактор кода. В редакторе будет выделена строка кода, соответствующая выделенной вами строке в панели Свойства.
  3. Щелкните правой кнопкой мыши по точке останова, которую вы хотите включить, и выберите Включить точку прерывания из контекстного меню. Метка точки останова будет теперь выглядеть как синий кружок, а соответствующий ей флажок в панели Точки останова будет установлен.

Точки останова со счетчиками выполнения

Вы можете задать для точки останова счетчик выполнения. Точка останова со счетчиком выполнения будет приостанавливать модель тогда, когда выполнение дойдет до нее в n-й раз (где n — заданное значение счетчика), но больше эта точка останова срабатывать не будет до тех пор, пока она не будет снова включена либо не будет изменено значение ее счетчика выполнения.

Чтобы установить счетчик выполнения для точки останова

  1. В панели Свойства, щелкните мышью в той строке, на которой установлена точка останова.
  2. Нажмите Ctrl + J (macOS: Cmd + J ), чтобы открыть редактор кода. В редакторе будет выделена строка кода, соответствующая выделенной вами строке в панели Свойства. Щелкните правой кнопкой мыши по значку точки останова в вертикальной линейке, идущей по левой границе редактора кода, и выберите Свойства точки прерывания. из контекстного меню.
  3. Откроется диалоговое окно Свойства для. .
  4. Установите флажок Счетчик выполнения.
  5. В поле справа введите число срабатываний точки останова, которое должно произойти, чтобы точка останова первый и единственный раз приостановила выполнение модели.

Когда выполнение дойдет до точки останова в n-й раз, модель будет приостановлена. Точка останова при этом будет выключена до тех пор, пока она не будет снова включена либо не будет изменено значение ее счетчика выполнения.

Управление условными точками останова

У точки останова может быть задано разрешающее условие. Точка останова с условием (называемая далее условной точкой останова) будет приостанавливать выполнение потока в одном из следующих случаев:

  • когда разрешающее условие станет истинно
  • когда изменяется результат вычисления разрешающего условия

Чтобы задать условие для точки останова

  1. В панели Свойства щелкните мышью в той строке, на которой установлена точка останова.
  2. Нажмите Ctrl + J (macOS: Cmd + J ), чтобы открыть редактор кода. В редакторе будет выделена строка кода, соответствующая выделенной вами строке в панели Свойства. Щелкните правой кнопкой мыши по значку точки останова в вертикальной линейке, идущей по левой границе редактора кода, и выберите Свойства точки прерывания. из контекстного меню.
  3. Откроется диалоговое окно Свойства для. .
  4. Установите флажок Включать условие (помощник по созданию кода недоступен).
  5. Введите условие для точки останова в расположенном ниже поле.
  6. Если вы хотите, чтобы выполнение модели приостанавливалось при достижении этой точки останова каждый раз, когда заданное условие будет истинно, выберите опцию условие ’истинно’. В этом случае вы должны задать выше условие, результат вычисления которого должен быть булевским — true (истинно) или false (ложно).
  7. Если же вы хотите, чтобы выполнение модели приостанавливалось при достижении этой точки останова каждый раз, когда изменяется результат вычисления разрешающего условия, выберите опцию значение условия изменяется.
  8. Щелкните по кнопке OK, чтобы закрыть диалоговое окно и применить сделанные изменения. Если эта точка останова будет включена и заданное для нее условие будет истинно, то выполнение модели будет приостанавливаться перед выполнением строки кода, на которой была установлена эта точка останова.

Чтобы было легче отличать условные точки останова от безусловных, у значка условной точки останова рисуется вопрос: .

Как мы можем улучшить эту статью?

  • Панель Точки останова
  • Добавление точек останова
  • Удаление точек останова
  • Включение и отключение точек останова
  • Точки останова со счетчиками выполнения
  • Управление условными точками останова

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *