Отладчик: различия между версиями
(Новая: В PascalABC.NET реализован отладчик, включающий в себя: # основные команды: F7 (шаг с входом в подпрограмму), F8 (...) |
Ibond (обсуждение | вклад) Нет описания правки |
||
(не показаны 4 промежуточные версии 3 участников) | |||
Строка 1: | Строка 1: | ||
В PascalABC.NET реализован отладчик, включающий в себя: | В PascalABC.NET реализован отладчик, включающий в себя: | ||
* основные команды: F7 (шаг с входом в подпрограмму), F8 (шаг без входа в подпрограмму), F4 (переход к курсору), F10 (выход из подпрограммы) | |||
* окно Watch | |||
* окно локальных переменных | |||
* всплывающие подсказки значений переменных | |||
* точки останова (breakpoint), в т. ч. условные точки останова | |||
== Детали реализации == | |||
В PascalABC.NET используется сторонняя библиотека Debugger.Core из SharpDevelop. По сути библиотека Debugger.Core - это managed-обертка над COM-интерфейсами, предоставляющих средства для отладки .NET-приложений. Существует альтернативная библиотека mdbgcore, входящая в Windows SDK. Библиотека Debugger.Core позволяет вычислять значения выражений на этапе отладки. Для представления значения используется класс Value. | |||
== | ==Вычисление выражений в окне Watch== | ||
При изменении состояния отладчика (переход к следующей точке останова) вычисляются все выражения в окне Watch. Для выражения строится синтаксическое дерево и далее визитором ExpressionEvaluator по дереву вычисляется значение выражения. Поиск имен происходит согласно семантике PascalABC.NET. То есть, сначала ищется среди локальных переменных текущей подпрограммы, далее в объемлющих подпрограммах, в классе, модуле, подключенных модулях и пространств имен. Список подключенных модулей и пространств имен хранится в атрибуте класса-обертки над модулем. Кроме того в exe-файл сохраняется информация об используемых в модуле пространств имен .NET. | |||
В библиотеке Debugger.Core также предусмотрен случай, когда выражение вычисляется слишком медленно. В таком случае выводится сообщение: Выражение слишком долго вычисляется. В Watch не отсутствует поддержка вызовов функций (только стандартные функции без побочного эффекта). Однако в разработке находится окно Immediate, в котором можно будет вызывать функции и методы. |
Текущая версия от 13:44, 20 июня 2009
В PascalABC.NET реализован отладчик, включающий в себя:
- основные команды: F7 (шаг с входом в подпрограмму), F8 (шаг без входа в подпрограмму), F4 (переход к курсору), F10 (выход из подпрограммы)
- окно Watch
- окно локальных переменных
- всплывающие подсказки значений переменных
- точки останова (breakpoint), в т. ч. условные точки останова
Детали реализации
В PascalABC.NET используется сторонняя библиотека Debugger.Core из SharpDevelop. По сути библиотека Debugger.Core - это managed-обертка над COM-интерфейсами, предоставляющих средства для отладки .NET-приложений. Существует альтернативная библиотека mdbgcore, входящая в Windows SDK. Библиотека Debugger.Core позволяет вычислять значения выражений на этапе отладки. Для представления значения используется класс Value.
Вычисление выражений в окне Watch
При изменении состояния отладчика (переход к следующей точке останова) вычисляются все выражения в окне Watch. Для выражения строится синтаксическое дерево и далее визитором ExpressionEvaluator по дереву вычисляется значение выражения. Поиск имен происходит согласно семантике PascalABC.NET. То есть, сначала ищется среди локальных переменных текущей подпрограммы, далее в объемлющих подпрограммах, в классе, модуле, подключенных модулях и пространств имен. Список подключенных модулей и пространств имен хранится в атрибуте класса-обертки над модулем. Кроме того в exe-файл сохраняется информация об используемых в модуле пространств имен .NET.
В библиотеке Debugger.Core также предусмотрен случай, когда выражение вычисляется слишком медленно. В таком случае выводится сообщение: Выражение слишком долго вычисляется. В Watch не отсутствует поддержка вызовов функций (только стандартные функции без побочного эффекта). Однако в разработке находится окно Immediate, в котором можно будет вызывать функции и методы.