<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
	<id>https://pascalabc.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=92.207.45.92</id>
	<title>Вики проекта PascalABC.NET - Вклад [ru]</title>
	<link rel="self" type="application/atom+xml" href="https://pascalabc.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=92.207.45.92"/>
	<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/92.207.45.92"/>
	<updated>2026-04-18T22:15:34Z</updated>
	<subtitle>Вклад</subtitle>
	<generator>MediaWiki 1.39.1</generator>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=120</id>
		<title>Заглавная страница</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%97%D0%B0%D0%B3%D0%BB%D0%B0%D0%B2%D0%BD%D0%B0%D1%8F_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0&amp;diff=120"/>
		<updated>2009-06-20T10:29:18Z</updated>

		<summary type="html">&lt;p&gt;92.207.45.92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Web-среда разработки PascalABC.NET ==&lt;br /&gt;
&lt;br /&gt;
[[Основная страница проекта WDE PascalABC.NET|Основная страница проекта]]&lt;br /&gt;
&lt;br /&gt;
== Некоторые статьи о внутреннем представлении PascalABC.NET ==&lt;br /&gt;
&lt;br /&gt;
* [[Интерфейс подключения нового языка программирования]]&lt;br /&gt;
* [[Директивы компилятора]]&lt;br /&gt;
* [[Синтаксическое дерево]]&lt;br /&gt;
* [[Семантическое дерево]]&lt;br /&gt;
* [[Формат PCU]]&lt;br /&gt;
* [[Отладчик]]&lt;br /&gt;
* [[Intellisense]]&lt;/div&gt;</summary>
		<author><name>92.207.45.92</name></author>
	</entry>
	<entry>
		<id>https://pascalabc.net/wiki/index.php?title=%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA&amp;diff=119</id>
		<title>Отладчик</title>
		<link rel="alternate" type="text/html" href="https://pascalabc.net/wiki/index.php?title=%D0%9E%D1%82%D0%BB%D0%B0%D0%B4%D1%87%D0%B8%D0%BA&amp;diff=119"/>
		<updated>2009-06-20T10:28:35Z</updated>

		<summary type="html">&lt;p&gt;92.207.45.92: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;В PascalABC.NET реализован отладчик, включающий в себя:&lt;br /&gt;
# основные команды: F7 (шаг с входом в подпрограмму), F8 (шаг без входа в подпрограмму), F4 (переход к курсору), F10 (выход из подпрограммы)&lt;br /&gt;
# окно Watch&lt;br /&gt;
# окно локальных переменных&lt;br /&gt;
# всплывающие подсказки значений переменных&lt;br /&gt;
# точки останова (breakpoint), в т. ч. условные точки останова&lt;br /&gt;
&lt;br /&gt;
== Детали реализации ==&lt;br /&gt;
В PascalABC.NET используется сторонняя библиотека Debugger.Core из SharpDevelop. По сути библиотека Debugger.Core - это managed-обертка над COM-интерфейсами, предоставляющих средства для отладки .NET-приложений. Существует альтернативная библиотека mdbgcore, входящая в Windows SDK. Библиотека Debugger.Core позволяет вычислять значения выражений на этапе отладки. Для представления значения используется класс Value.&lt;br /&gt;
&lt;br /&gt;
==Вычисление выражений в окне Watch==&lt;br /&gt;
При изменении состояния отладчика (переход к следующей точке останова) вычисляются все выражения в окне Watch. Для выражения строится синтаксическое дерево и далее визитором ExpressionEvaluator по дереву вычисляется значение выражения. Поиск имен происходит согласно семантике PascalABC.NET. То есть, сначала ищется среди локальных переменных текущей подпрограммы, далее в объемлющих подпрограммах, в классе, модуле, подключенных модулях и пространств имен. Список подключенных модулей и пространств имен хранится в атрибуте класса-обертки над модулем. Кроме того в exe-файл сохраняется информация об используемых в модуле пространств имен .NET.  &lt;br /&gt;
В библиотеке Debugger.Core также предусмотрен случай, когда выражение вычисляется слишком медленно. В таком случае выводится сообщение: Выражение слишком долго вычисляется. В Watch не отсутствует поддержка вызовов функций (только стандартные функции без побочного эффекта). Однако в разработке находится окно Immediate, в котором можно будет вызывать функции и методы.&lt;/div&gt;</summary>
		<author><name>92.207.45.92</name></author>
	</entry>
</feed>