Отладчик: различия между версиями
Ibond (обсуждение | вклад) Нет описания правки |
Нет описания правки |
||
Строка 7: | Строка 7: | ||
== Детали реализации == | == Детали реализации == | ||
В PascalABC.NET используется сторонняя библиотека Debugger.Core из SharpDevelop. По сути библиотека Debugger.Core - это managed-обертка над COM-интерфейсами, предоставляющих средства для отладки .NET-приложений. Существует альтернативная библиотека mdbgcore, входящая в Windows SDK. | В 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:28, 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, в котором можно будет вызывать функции и методы.