НОВИНКИ 2002! http://www.ifarus.com 
Налоговое освобождение с аудитом по цене от $63. 
Новое поколение информационных разработок в области налогового планирования для бизнеса и частных лиц. Бесплатно БД (170 Мб; более 2000 прикладных статей о налогах).
 
Готовые фирмы в РФ и офшорных юрисдикциях по оптовым ценам. 
Сайт Группы – это центр оптовых цен на готовые фирмы. Наши цены уникальны. Вы можете купить российскую фирму без смены учредителей за $135 или компанию в Панаме с зарегистрированным офисом и номинальным сервисом всего за $750.
 
Бесплатный e-журнал налогового планирования.


Идет охота на жуков

Руслан Ризванов

Наверное, нет такого программиста, которому бы не приходилось выискивать и исправлять ошибки в своей программе. Обычно для этого используются отладчики (debuggers) — отдельные или встроенные в среду разработки программные инструменты, с помощью которых можно на любом этапе выполнения программы получить информацию о значениях переменных, регистров и пр. Правда, многие начинающие программисты почему-то не пользуются средствами отладки и, например, чтобы узнать значение той или иной переменной, выводят его на экран или в файл с помощью временных вставок в программе. Естественно, что в некоторых приложениях это делать неудобно, требуется больше времени, и т. д.

Bug — с англ. насекомое (особ. кровососущие), ЖУК.

В этой статье речь пойдет об элементарных возможностях отладки в популярных на сегодняшний день визуальных средах программирования Delphi и C++ Builder. Они практически ничем друг от друга не отличаются (разумеется, кроме используемых языков программирования) и имеют встроенный отладчик. Последний является стандартным инструментом для borland’овских продуктов, знакомым многим программистам (особенно пишущим на ассемблере) еще с тех времен, когда он был отдельной программой и назывался Turbo Debugger.

Да, программа запущена, сильно запущена…

Существуют ошибки синтаксические и логические, есть и такие, которые возникают на этапе выполнения программы — runtime errors. Если с синтаксическими все ясно (у некоторых еще со школы :-)), с runtime тоже (например, деление на ноль отладчиком можно отследить), то логические — самые нежелательные. Они, как это обычно водится, появляются там, где их никто не ждет, множатся, накладываясь друг на друга, и в особо тяжелых случаях заставляют программиста всерьез задуматься о смысле жизни :-)… или о написании программы заново.

Почти все ошибки можно найти, используя команды средств отладки. По своему предназначению они делятся на команды для пошагового выполнения программы, для наблюдения переменных стека (стек — часть памяти, отводящаяся программой для временного хранения данных; в ассемблере также используется для передачи параметров подпрограмм), регистров и пр. Для пошагового выполнения программы в рассматриваемых визуальных средах имеются команды в выпадающем меню Run Step Over, Trace Into, Trace to Next Source Line, Run to Cursor, Run Until Return. Их удобно использовать с так называемыми точками останова, которыми отмечаются строки, где произойдет остановка выполнения программы. Это нужно затем, чтобы не выполнять построчно всю программу, а сразу перейти к интересующему месту.

Для установки точки используется команда Add Breakpoint/Source Breakpoint (F5) или же щелчок мыши по полю слева от текста программы, там появится красная отметка. После этого нажатием клавиши F4 (Run To Cursor) программа запускается на выполнение в режиме отладки. Как только отладчик дойдет до строки с установленной точкой останова, выполнение программы приостановится. В этот момент можно узнать значения интересующих переменных. Для этого командой Add Watch (Ctrl+F5) открывается окно Watch Properties. В нем в строке Expression указывается название переменной, а ниже — тип. После нажатия OK переменная появляется в списке Watch List.

Если с остальными типами переменных все ясно, то просмотр значений массивов требует отдельного рассмотрения. Их удобно просматривать с помощью команды Evaluate/Modify в том же выпадающем меню Run по Ctrl+F7. Она открывает окошко, из которого можно получить доступ и к Watch List’у, установить значения переменных (при этом в тексте программы ничего не изменится) — Evaluate, Modify, а также с помощью команды Inspect получить информацию о переменной. Например, о массиве — он будет отображен в виде аккуратной матрицы.

Но вернемся командам пошагового выполнения программы. После того как произошла остановка на точке останова, с помощью команд Trace Over (F8) и Trace Into (F7) можно выполнять программу далее построчно. Эти команды отличаются тем, что первая при пошаговом выполнении не затрагивает тело процедур и функций, а вторая — наоборот. Если в программе есть другие точки останова — нажатием F4 (Run To Cursor) сразу осуществляется выполнение программы до ближайшей из них.

Ряд средств наблюдения имеется и в выпадающем меню View в разделе Debug Windows. С помощью команд, содержащихся в нем, можно просмотреть список установленных точек останова Breakpoints, содержимое стека Call Stack. Следующие команды работают при запущенной программе или в процессе отладки: Local Variables (локальные переменные) — список переменных, объявленных в процедурах и функциях; Threads — список используемых программой потоков; Modules — с помощью этой команды можно узнать какие .dll и .exe использует ваш процесс (программа); Event Log — показывает, какие события происходят в вашем процессе; CPU — окно, содержащее системную информацию о содержимом регистров, состоянии флагов процессора, ассемблерный код программы, содержимое памяти; FPU — показывает содержимое регистров и состояние флагов сопроцессора.

Кроме всего перечисленного, в Delphi существуют директивы условной компиляции. С их помощью можно определять, что должно компилироваться, а также использовать в программе временные куски кода и промежуточные переменные. Например, директивой $Define определим название блока программы, в котором будет расположен временный кусок кода — в программе он будет иметь следующий вид:

временный кусок кода

При наличии в начале программы директивы {$Define Debug} кусок кода будет использоваться и компилироваться, если ее убрать — нет.

Надеюсь, приведенный материал поможет вам в написании программ — иногда ведь подобные темы вовсе опускаются в ходе получения навыков программирования. Удачной вам охоты :-)!

Источник: http://www.mycomp.com.ua/

 


Copyright © "Internet Zone", http://www.izcity.com/, info@izcity.com