summaryrefslogtreecommitdiffstats
path: root/doc/ru/types.html
diff options
context:
space:
mode:
Diffstat (limited to 'doc/ru/types.html')
-rw-r--r--doc/ru/types.html126
1 files changed, 126 insertions, 0 deletions
diff --git a/doc/ru/types.html b/doc/ru/types.html
new file mode 100644
index 0000000..6cb8453
--- /dev/null
+++ b/doc/ru/types.html
@@ -0,0 +1,126 @@
+<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=koi8-r">
+ <meta name="Author" content="Johannes Sixt">
+ <title>KDbg - Руководство Пользователя - Таблицы Типов</title>
+</head>
+<body text="#000000" bgcolor="#FFFFFF" link="#0000EF" vlink="#51188E" alink="#FF0000">
+<a href="index.html">Содержание</a>
+<h1>Таблица Типов KDbg</h1>
+KDbg может отображать содержимое отдельно взятых членов структурированных типов
+данных, таким образом отсутствует необходимость в раскрытии переменных в
+<a href="localvars.html">окне локальных переменных</a> или в
+<a href="watches.html">окне отслеживаемых выражений</a>. Информация о том,
+переменная какого члена отображается, хранится в <i>таблицах типов</i>. Обычно
+существует одна таблица на разделяемую библиотеку.
+<p>Таблицы типов KDbg расположены в каталоге
+<tt>$TDEDIR/share/apps/kdbg/types</tt>. Имена файло таблиц оканчиваются на
+<tt>.kdbgtt</tt>. Например, таблица типов для <tt>libtqt.so</tt> называется
+<tt>qt.kdbgtt</tt>.
+<p>Файлы таблиц типов соответствуют стандартному синтаксису файлов конфигурации
+KDE. Файл содержит следующие группы:
+<ul>
+<li>
+Группу <tt>[Type Table]</tt>, в которой перечислены типы и информация о том,
+как отладчик может определить, слинкована ли программа с этой библиотекой.</li>
+
+<li>Группу на каждый прописанный тип, в которой содержится информация о том,
+как KDbg должен отображать данный тип.</li>
+</ul>
+Для определения таблиц типов, применимых к отлаживаемой программе, KDbg
+запрашивает список разделяемых библиотек, с которыми слинкована программа.
+Затем он осуществляет поиск имен этих библиотек в таблицах типов в элементах
+<tt>ShlibRE</tt>. Используются те таблицы, в которых были найдены
+соответствующие имена библиотек. Если тип появляется в нескольких таблицах, то
+неопределено, какое же из описаний будет выбрано.
+<h2>Группа <tt>[Type Table]</tt></h2>
+Эта группа содержит следующие элементы:
+<ul>
+<li>
+<tt>Types1</tt>, <tt>Types2</tt>, и тд. Эти элементы являются именами типов.
+Каждый из них представляет собой разделенный запятыми список имен типов. В
+каждом элементе может быть перечислено любое количество типов. (Имена типов
+можно разбить на несколько строк, чтобы они строки не получались слишком
+длинными.) В этих строках недопустимы символы пробела. Элементы должны
+нумероваться последовательно (KDbg прекращает чтение на первом же пропуске),
+однако элементы могут быть пусты (т.е. вообще не содержать типов). Иногда
+порядок перечисления имен имеет значение (см. пример с <tt>Alias</tt> ниже).
+</li>
+
+<li>
+<tt>ShlibRE</tt>. KDbg использует этот элемент для определения, использовать
+ли данную таблицу к текущей отлаживаемой программе. Для этого KDbg определяет
+разделяемые библиотеки, используемые программой. Если хотя бы одна из них
+совпадает со значением этого элемента, таблица используется. Используемые
+регулярные выражения совпадают с регулярными выражениями TQt (метасимволы
+<tt>.*?[]^$\</tt> распознаются обычным образом, однако отсутсвует возможность
+группировать символы.)</li>
+
+<li>
+<tt>LibDisplayName</tt>. Этот элемент используется в списках, в которых
+доступные таблицы типов перечислены для указания данной таблицы типов.</li>
+
+<br><font size=-1>На данный момент это не используется.</font></ul>
+
+<h2>Группа типа</h2>
+На каждый заявленый тип должна быть заведена группа, названная именем типа.
+<font size=-1>На данный момент шаблоны С++ не поддерживаются.</font>
+Каждая группа содержит следующие элементы:
+<ul>
+<li>
+<tt>Display</tt> указывает, как KDbg должен отображать значение этого типа.
+Строка может содержать от 1 до 5 символов '<tt>%</tt>'. Они заменяются на
+результаты выражений, описанных в элементах <tt>Expr</tt><i>x</i>.</li>
+
+<li>Один или более <tt>Expr1</tt>, <tt>Expr2</tt>, и тд. Каждый из них должен
+содержать <b>только одну</b> последовательность <tt>%s</tt>, которая будет
+заменена выражением, чье значение необходимо получить. Такие выражения
+передаются gdb, а результат заносится на место соответствующего символа
+процента в элементе <tt>Display</tt>.</li>
+
+<li>
+<tt>Alias</tt> указывает на тип-псевдоним. Если присутствует данная запись, то
+с данным типом обходятся также, как с тем, на который он указывает. Этот
+тип-псевдоним дожен быть описан перд ссылающимся на него типом в элементах
+<tt>Types</tt><i>x</i> группы <tt>[Type Table]</tt>.</li>
+</ul>
+<font size=-1>На данный момент количество выражений для каждого типа ограничено
+пятью. Это может быть с легкостью изменено, но я не рекомендую вообще
+приближаться к данному рубежу - это только затормозить процесс отладки.</font>
+<p>KDbg распознает специальное расширение, которое используется для вывода
+строк TQt 2.0 в unicode: Если перед <tt>Expr</tt><i>x</i> стоит
+<tt>/TQString::Data</tt>, подразумевается, что результат операции является
+указателем на <tt>TQString::Data</tt>. Выводимое значение является строкой в
+unicode, представленное <tt>TQString::Data</tt> (которое может быть
+<tt>TQString::null</tt>, если это пустая строка TQt, или <tt>(null)</tt>, если
+<tt>unicode</tt> член структуры является нулевым указателем). Для примера см.
+<tt>qt2.kdbgtt</tt>.
+
+<p>Совет: Совсем необязательно описывать наследуемые типы, если они должны
+обрабатываться также как и базовый класс - KDbg может определить наследование
+и использовать описание типа первого (слева) базового класса. Вы можете
+использовать элемент <tt>Alias</tt> для быстрого указания класса при
+множественном наследовании, отличного от первого слева.
+<h2>Пример</h2>
+Этот пример показывает, как <tt>TQString</tt> и <tt>TQObject</tt> описаны в
+<tt>qt.kdbgtt</tt>. Дополнительно определен <tt>TQTableView</tt>, ссылающийся
+на <tt>TQObject</tt>. Этот пример применим к TQt 1.x, который расположен в
+разделяемых библиотеках, имена которых оканчиваются как <tt>libtqt.so.1</tt>.
+<pre>[Type Table]
+Types1=TQString
+Types2=TQObject,TQTableView
+LibDisplayName=libtqt 1.x
+ShlibRE=libtqt\.so\.1$
+[TQString]
+Display={ % }
+Expr1=(%s).shd->data
+[TQObject]
+Display={ name=% #chld=% }
+Expr1=(%s).objname
+Expr2=(%s).childObjects->numNodes
+[TQTableView]
+Alias=TQObject</pre>
+Замечание: гораздо безопаснее заключать <tt>%s</tt> в скобки.
+</body>
+</html>