Как эффективно реализовать точки останова отладчика? - PullRequest
5 голосов
/ 13 мая 2009

Иногда я накапливаю большую массу точек останова из разных сеансов отладки в разных местах моего кода. Как отладчик эффективно знает, когда останавливаться на точке останова? Это не может останавливаться на каждой отдельной строке, чтобы проверить номер строки и имя исходного файла по потенциально длинному списку точек останова, не так ли?

Это отладчик Java в Eclipse, но я полагаю, что вопрос относится к любому отладчику.

Ответы [ 4 ]

7 голосов
/ 13 мая 2009

Стратегия, используемая во многих отладчиках (я не знаю об Eclipse), заключается в установке патча в коде в точке точки останова, которая по сути является вызовом подпрограммы или системным вызовом. Код, к которому осуществляется переход, содержит информацию о точке останова и выполняет любую печать или прием пользовательских команд, а также код, который был перезаписан патчем, чтобы можно было выполнить код, чтобы выполнение соответствовало исходному коду, без точки останова

5 голосов
/ 13 мая 2009

Чтобы добавить хороший ответ Надрека:

Здесь есть статья здесь с более подробной информацией, включая некоторые более экзотические вещи (конкретные коды операций на x86; аппаратные контрольные точки).

2 голосов
/ 01 августа 2009

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

0 голосов
/ 01 февраля 2012

Вы можете получить полную информацию о внутренностях Eclipse Debugger и о том, как написать один, по ссылке ниже Как написать Eclipse Debugger

...