"Адское" программирование Ada-95 -Компилятор GNAT

         

Вызов подпрограмм определяемых пользователем



Вызов подпрограмм определяемых пользователем

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

call subprogram-name (parameters)

Ключевое слово call может быть опущено в случае, когда имя подпрограммы subprogram-name не совпадает с какой-либо предопределенной командой GDB.

В результате выполнения этой команды осуществляется вызов указанной подпрограммы и передача ей списка параметров, которые заданы в команде.В качестве параметров могут быть указаны выражения



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

Важность данного средства заключается в том, что оно позволяет использовать в программе различные отладочные подпрограммы, которые приспособлены к каким-либо специфическим структурам данных отлаживаемой программы.Подобные подпрограммы отладки могут быть написаны с целью получения высокоуровневого отображения внутреннего состояния какого-либо абстрактного типа данных, что намного удобнее чем использование распечатки содержимого памяти (иначе - дамп памяти), которая заната структурой данных, на физическом уровне.Следует учитывать, что стандартная команда отладчика GDB print имеет представление только о физическом расположении типов в памяти, а не об их смысловом значении и абстрактном представлении.Отладочные подпрограммы могут предусматривать отображение информации с учетом требуемого семантического уровня и, таким образом, их использование при отладке программы может быть очень полезно.

Например, при непосредственной отладке GNAT, ключевым моментом является наличие доступа к содержимому узлов семантического дерева, которое содержит внутреннее представление программы.Однако, узлы семантического дерева представляются в виде целочисленных значений, которые являются индексами в таблицу узлов.Использование встроенной команды print, для узлов семантического дерева, обеспечит простое отображение целочисленных значений, что не обладает желаемой информативностью.Таким образом, намного удобнее использовать подпрограмму PN (описана в файле treepr.adb дистрибутива исходных текстов GNAT), которая принимает на входе узел семантического дерева и отображает его высокоуровневое представление, включающее синтаксическую категорию данного узла, его место в исходном тексте, целочисленные значения, соответствующие родительскому узлу и узлам потомкам, а также множество дополнительной семантической информации.Для более детального изучения этого примера можно обратиться к телу этой процедуры в указанном файле.



Содержание раздела








Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий