С какой целью производится отладка программ. Отладка программы. Паскаль Отладка программ

Для Windows 24.03.2019
Для Windows

В EPLAN существует два типа форм, отличающихся по свойству форм Работа с формой :

  • Статические формы: В данных формах возможная имеющаяся графика одинакова на каждой странице отчета, и высота строк проанализированных данных постоянна.
  • Динамические формы: В данных формах графики, если они имеются, построены динамично, и существует возможность добавки так называемых "динамических областей". Высоту строчек можно сделать переменной с помощью свойства форм Динамически подобрать высоту строчки , и можно объединить отчеты нескольких функций на странице отчетов.

В следующих разделах даются пояснения по отдельным динамическим областям, которые можно добавить в динамическую форму (через пункты меню Вставить > Динамическая область > ... в редакторе форм).
Действительно для всех областей: Заданная в редакторе форм ширина области не учитывается, анализируется только высота. Кроме того, необходимо принимать во внимание, что отчет начинается с позиции, на которой находится первая точка вставки; если, например, удалить верхний колонтитул из формы , не перемещая области данных, то начинается отчет с позиции точки вставки области данных.

Через свойства формы Число строк и Высота строки определите максимальную величину области отчета на странице: оба значения перемножаются, и таким образом находится значение (в "мм") для (невидимой) границы области отчета, за которой он прерывается. Линия границы рассчитывается с учетом конца верхнего колонтитула. Если число строк = 20 и высота строки = 10 мм , отчет обрывается на высоте 20 x 10 мм = 200 мм .

Замечание:

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

Верхний колонтитул

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

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

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

Заголовок

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

Существует возможность определения в форме нескольких заголовков, если, например, места установки, на которых находятся клеммники, необходимо отобразить в спецификации клеммника. Для этого выберите свойство формы Создать заголовки для первых х свойств сортировки и задайте требуемую настройку для поля Настройка сортировки в диалоговом окне Отчеты - <Имя проекта> (через соответствующее свойство на вкладке Шаблоны ).

Через свойство Без перехода на след. строку для заголовка можно, помимо этого, управлять позицией заголовка в форме: Если это свойство активировано, то заголовок выдается вместе со следующей строкой данных. Если это свойство деактивировано, то для заголовка генерируется отдельная строка.

Замечание:

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

Область данных

В данной области анализируются данные. Если у формы несколько столбцов (Свойство формы Число столбцов ) и установлен флажок Объединить (диалоговое окно Настройки: Вывод в страницах ), через свойство Каждое устройство начинать в новом столбце можно указать, необходимо ли для каждой анализируемой функции начинать новый столбец, или анализировать данные компактно друг под другом.

Нижний колонтитул области данных

Данная область является "обратным эквивалентом" для заголовка, т. е., он отображается в области данных и перед следующей анализируемой функцией. Здесь можно, например, определить линию, которая визуально отображает, что отчет функции завершен.

Нижний колонтитул

Нижний колонтитул анализируется один раз на страницу, т. е. не для каждой функции. В формах с несколькими столбцами он располагается за последним столбцом.

Замечание:

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

Цель Урока

В этом уроке мы научимся создавать в Adobe Illustrator абстрактный современный фон, который состоит из стандартных векторных форм. Затем мы преобразуем стандартные формы в динамические, что позволит нам беспрепятственно управлять их параметрами и даже трансформировать их в другие объекты, получая новые векторные работы в считанные секунды. Все это стало возможным, благодаря новому релизу VectorScribe v2 .

Создание абстрактного фона из стандартных форм

Шаг 1

В начале этого урока давайте вкратце рассмотрим, как создать абстрактный фон, используя стандартные формы в Adobe Illustrator. Создаем прямоугольник при помощи Rectangle Tool (M), величина которого соответствует рабочей области и зальем его линейным градиентом, передающим распределение света на нашей сцене.

При помощи Ellipse Tool (L) создадим две окружности, центры которых совпадают.

Шаг 2

Выделяем обе окружности, затем нажимаем на Minus Front в панели Pathfinder.

Заливаем полученный составной путь линейным градиентом от белого к светло-серому цвету.

Добавим новую заливку к форме, нажав на соответствующую кнопку в панели Appearance.

Выделяем нижнюю заливку в панели, затем переходим Effect > Distort & Transform > Transform … и устанавливаем значения для опции Scale.

Изменим направление градиента нижней заливки на противоположное.

Шаг 3

Теперь создадим падающие тени от созданного абстрактного объекта. Нарисуем новую окружность, которую расположим ниже Compound path. Заливаем ее радиальным градиентом, который содержит белый цвет и два оттенка серого цвета.

Нарисуем окружность белого цвета и расположим ее так, как показано на рисунке ниже.

Выделяем окружности, созданные в этом шаге, затем переходим Object > Blend > Make. После чего переходим Object > Blend > Blend Options… и устанавливаем требуемое число шагов.

Таким образом, мы создали тень внутри кольца.

Шаг 4

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

Создадим из этих окружностей бленд объект, способом, указанным в предыдущем шаге.

Этот бленд объект очень скоро станет внешней тенью от кольца.

Шаг 5

Группируем оба бленд объекта.

Установим для созданной группы режим смешивания Multiplyв панели Transparency. Теперь падающие тени стали полупрозрачными.

Сгруппируем все объекты, кроме фона, конечно. Теперь мы можем создать простую композицию, дублируя исходную форму и изменяя размеры новых элементов. У меня получилось то, что вы можете видеть ниже.

Преобразование стандартных форм в динамические формы

Шаг 6

Преобразование стандартных форм в динамические теперь возможно при помощи новой версии плагина VectorScribe v2 . Он имеет функцию узнавания фигур, которая осуществляет такое преобразование. Давайте возьмем Dynamic Shape Tool и наведем указатель на путь одной из стандартных форм.

Как вы можете видеть, появилась аннотация, говорящая о том, что плагин узнал форму. Если мы кликнем по форме, то она немедленно преобразуется в динамическую. Это означает, что мы можем управлять ее параметрами в панели Dynamic Shapes и даже преобразовать ее в другую форму.

Шаг 7

Мы также можем преобразовать все имеющиеся формы в динамические, если, конечно, они имеют правильную форму. Для этого открываем выпадающее меню панели Dynamic Shapes и выбираем Convert to Dynamic Shape.

Плагин сообщает нам, что 61 путь был конвертирован, нажимаем OK.

Шаг 8

Давайте попробуем изменить форму всех существующих объектов. Выбираем Dynamic Polygon и устанавливаем количество сторон.

Как вы можете видеть, все преобразования прошли успешно, не смотря на то, что для создания фона я использовал объекты, обладающие разными свойствами (объекты с несколькими заливками и бленд объекты). В считанные секунды мы получаем другой фон, состоящий из округленных прямоугольников.

Похоже на фокус, но это реально работает!

Шаг 9

В заключении я хочу сказать, что VectorScribe v2 умеет также узнавать округленные углы и трансформировать их в динамические. Создадим скругленный прямоугольник при помощи Rounded Rectangle Tool.

Берем Dynamic Corners Tool и подводим указатель к одному из скругленных углов. Как вы можете видеть, появилась аннотация, указывающая на то, что распознавание осуществлено.

После клика по пути формы, угол будет конвертирован в динамический и его радиусом можно управлять перетаскиванием маркера или в панели Dynamic Corners.

К вашему сведению, это далеко не все усовершенствования, которые получила текущая версия плагина. Кроме новых функций вы получите еще два абсолютно новых инструмента, о которых вы можете или посетив страницу

Я решил проверить, как отладчик Bochs можно использовать для отладки загрузчика и внутренностей операционной системы. Эта статья описывает, что из этого получилось.

Bochs у меня был установлен давно, я решил заглянуть в инсталляционный директорий и обнаружил, что у Bochs среди прочих выполнимых файлов есть два выполнимых файла bochs.exe и bochsdbg.exe:

Чтобы протестировать загрузку, для начала беру простой Hello World загрузчик:

Section .text use16 org 0x7C00 ; программа загружается по адресу 0x7C00 start: mov ax, cs mov ds, ax ; выбираем сегмент данных mov si, message cld ; направление для строковых команд mov ah, 0x0E ; номер функции BIOS mov bh, 0x00 ; страница видеопамяти puts_loop: lodsb ; загружаем очередной символ в al test al, al ; нулевой символ означает конец строки jz puts_loop_exit int 0x10 ; вызываем функцию BIOS jmp puts_loop puts_loop_exit: jmp $ ; вечный цикл message: db "Hello World!",0 finish: times 0x1FE-finish+start db 0 db 0x55, 0xAA ; сигнатура загрузочного сектора

Записываю его в hello.asm, компилирую: nasm hello.asm -o hello.img
Получаю файл hello, размером 512 байт. Это образ загрузочной дискеты. В первом секторе загрузочный сектор c программой «Hello world»

Запускаю bochsdbg.exe. Открывается стартовое меню:

Дважды кликаю в меню «Disk & Boot». Открывается меню настройки дисков. Указываю что флоппи диск читать из файла hello.img:

Нажимаю OK, в стартовом меню нажимаю на Start. Открывается два окна, окно с виртуальной машиной, и окно с командной строкой для команд отладки. Команды отладки похожи на gdb. Например:

  • b 0x7c00 — установить breakpoint на инструкцию по адресу 0x7c00, что соответствует началу загрузочного сектора
  • c — продолжить выполнение (continue)
  • h — получить в помощь список возможных команд
  • h b — получить помощь по конкретной команде (в данном случае break)

После команды ‘c’ (сontinue), Bochs продолжает выполнение и останавливается на первой команде загрузчика, как и хотелось. Чтобы по шагам отлаживаться даю команду ‘n’ (next). Предыдущую команду повторяю простым нажатием на ‘Enter’.

У отладчика много разных команд. Например:

  • regs — показать содержимое регистров
  • sregs — показать содержимое сегментных регистров
  • x c хитрыми параметрами типа x /16b 0x7c00 — покажет содержимое 16 байт по адресу 0x7c00

И т.д. помощь по командам можно получить из командной строки, с помощью команды ‘h’, как я писал выше. А также на сайте разработчиков есть справочник команд и много другой полезной информации, которой стоит пользоваться. Чтобы немного еще проиллюстрировать как это выглядит, еще пара скринов:

У каждого из команды ][ - свои предпочтения по части софта и утилит для
пентеста. Посовещавшись, выяснилось, что выбор так разнится, что можно составить
настоящий джентльменский набор из проверенных программ. На том и решили. Чтобы
не делать сборную солянку, весь список мы разбили на темы. Сегодня мы разберем
отладчики и дизасемблеры — все, что понадобится для реверсинга приложений.

OllyDbg

Если ты хоть раз читал статьи о крякинге или, например, смотрел видеоуроки от
нашего реверсера Cr@wler’а, то имя "Ольки" тебе должны быть знакомо. Это
32-битный отладчик работающий на ring-3 с продуманным интерфейсом и полезными
функциями, которые существенным образом облегчают процесс отладки. В OllyDBG
встроен специальный анализатор, которые распознает и визуально обозначает
процедуры, циклы, константы и строки, внедренные в код, обращение к функциям API,
параметры этих функции и т.п. Для новичка (и не только) — это именно то, что
надо! В ходу до сих пор находится версия 1.10, а бета-версия второй ветки еще с
марта не претерпела изменений, однако уже сейчас можно оценить многочисленные
нововведения дебаггера. Работа ведется уже давно, и поэтому разработчику уже
есть что показать (прежде всего новый движок). Бету едва ли можно рассматривать
как основной инструмент для серьезных дел, поэтому спешу предупредить: о
стабильности нового движка пока приходится только мечтать, поэтому используй "бетку"
на свой страх и риск.

Тут надо сказать, что стал OllyDbg стандартным user-land отладчиком, взятым
на вооружение хакерами и они тут же захотели его улучшить. Появилось множество
нестандартных сборок: одни фиксят ошибки Ольги, другие расширяют функционал,
третьи – скрывают ее от протекторов. Недостаток - "движок" отладчика работает
через MS Debugging API, страдающий кучей врожденных ограничений, оставляющий за
собой множество трудноудаляемых следов и представляющий легкую мишень для
антиотладочных технологий.

Immunity Debugger

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

В Immunity Debugger входит множество библиотек, написанных на Питоне и
заточенных под хакерские нужды. Библиотеки вызываются из Питоновых программ,
среди которых значится и searchcrypt.py – отличное средство идентификации
следующих криптографических алгоритмов: AES, BLOWFISH, CAMELLIA, CAST, MD5, RC2,
RC5, RIPEMD160, SHA1, SHA256, SHA512.

Immunity Debugger используют многие специалисты по безопасности,
выкладывающие proof-of-concept expolit’ы, написанные на Питоне и предназначенные
для работы исключительно в среде данного отладчика. И хотя хакер с головой
разберется в алгоритме работы exploit’а и без Immunity Debugger’а, портируя
exploit на любой другой язык, рано или поздно отладчик оказывается на
компьютере, зачастую становясь основным инструментом, вытесняющим Ольгу.

YDbg

Популярный и очень мощный мод, основанный на Ольге 1.10 и собравший в своем
дистрибутиве огромное количество плагинов, скриптов, а также кучу других
полезных инструментов. В отличие от Immunity Debugger’а, ориентированного на
специалистов по безопасности, YDbg писался хакерами и для хакеров, ломающих
защиты с протекторами (те активно сопротивляются такому положению дел и
напичканы анти-отладочными приемами, распознающими присутствие Ольги по главному
окну с ее именем и пунктам меню). Поэтому первое, что бросается в глаза при
запуске YDbg (исполняемый файл которого переименован из OLLYDBG.EXE в SND.exe),
это "покореженные" пункты меню. В частности, "Memory" превратилось в "M3m0ry", "SEH
chain" в "S3H chain", "Breakpoints" в "Br3akp01nts" и т. д. Словом, все
"хакерские" пункты изменены – попробуй их найти (естественно, в новых версиях
протекторов наверняка появится детекция YDbg, но пока он успешно скрывается от
кучи защит, палящих Ольгу). В состав дистрибутива YDbg входит 36 популярных
плагинов (и не нужно теперь рыскать по Сети в их поисках). Среди них затесался
настоящий бриллиант – IDA Sigs, название которого говорит само за себя. Да-да!
Это плагин, поддерживающий IDA-сигнатуры и отображающий их в виде комментариев к
вызываемым функциям в Ольге или в YDbg. Другой полезный плагин – red-hawk
("красный ястреб") представляет собой панельку инструментов, позволяющую, в
частности, одним движением мыши установить точки останова на нужные функции
(например, в Visual Basic’е это что-то типа __vbaStrCmp или __vbaStrCopy,
используемые для сравнения и копирования строк, соответственно). Начинающие
хакеры просто визжат от восторга, поскольку красный ястреб фактически является
учебником по взлому, а так попробуй догадаться, что нужно делать! Каталог \SCRIPT
содержит 637 скриптов, главным образом предназначенных для снятия различных
протекторов/упаковщиков исполняемых файлов и автоматизации всяких рутинных дел.

SoftICE

Всем известный (даже тем, кто к крякингу даже близко не подходил) отладчик
для Windows, работающий дна уровне ядра. В отличие от прикладного отладчика, как
например OllyDbg, SoftICE способен приостановить все операции в Windows, что
очень важно для отладки драйверов. Работает в обход MS Debugging API, что
значительно усложняет антиотладку, однако, учитывая, что для разработчиков защит
soft-ice – враг номер один, практически все протекторы легко распознают его
присутствие в системе. Поэтому никак не обойтись без специальных расширений
(которые упомянем дальше). SoftICE был первоначально разработан компанией NuMega,
которая включала его в пакет программ для быстрой разработки
высокопроизводительных драйверов под названием Driver Studio, который
впоследствии был приобретён Compuware. Помнишь, сколько всевозможных мануалов
было по поводу установки Soft-Ice’а под Windows XP? Увы, начиная с висты,
отладчик не работает. Разработчики приостановили разработку в апреле 2006 года.
На официальном сайте его не найти и доступен только на торрентах.

Microsoft Debugger

Входит в состав WDK (Windows Driver Kit - бывший Driver Development Kit или
DDK), а также в комплект Debugging Tools. Оба они бесплатны, но WDK намного
больше по объему и требует предварительной регистрации для получения Windows
Live ID, в то время как Debugging Tools раздается без регистрации вместе с SDK,
в которую входит документация, заголовочные файлы, библиотеки и несколько
примеров, как надо писать плагины.

Microsoft Debugger может работать как на прикладном уровне (ring-3), так и на
уровне ядра. Вплоть до XP ядерная отладка требовала, как минимум, двух машин,
соединенных COM-шнурком, но теперь достаточно и одной.

Поставляется в двух редакциях: windbg.exe – графический интерфейс и cdb.exe -
интерфейс командой строки. И та и другая являются лишь тонкими обертками вокруг
dbgeng.dll, в которой, собственно, и реализован основной отладочный "движок",
документированный протокол обмена. Поэтому, чтобы в очередной раз не писать
трассер с нуля, dbgeng.dll можно использовать в качестве "фундамента" при
написании универсальных распаковщиков исполняемых файлов.

Syser Kernel Debugger

Достойных отладчиков ядра всего три: SoftICE, Syser и Microsoft Kernel
Debugger, но SoftICE не работает на Висте и Server 2008, а Microsoft Kernel
Debugger – для хакерских целей не самый лучший вариант. Остается Syser , который
хакеры взяли на вооружение и весьма активно используют. Написан он двумя
предприимчивыми китайскими реверсерами Wu YanFeng и Chen JunHao. По сути, Syser
— отладчик уровня ядра с графическим оконным интерфейсом. Позволяет отлаживать
как приложения, так и драйвера. Сочетает в себе функции IDA Pro, Softice и
Ollydbg. Поддерживает подсветку листинга дизассеблера, динамическую загрузку и
выгрузку, все команды отладчика SoftICE, полноценную работу с юникодом и
многопроцессорными системами. Проработаны многие мелочи: например корректно
работает буфер обмена, позволяющий копировать данные из уровня Ring 3 в уровень
Ring 0. Многие из операций можно автоматизировать с помощью скриптов. Надо
сказать, что Syser — преемник SoftICE, из которого, как говорят, были дернуты
целые модули. У него масса преимуществ, как, впрочем, масса недостатков, поэтому
реально его приходится юзать совместно с Microsoft Kernel Debugger.

GDB

GNU Debugger – основной отладчик под UNIX, ориентированный на совершенно иной
тип мышления, чем все вышеперечисленные отладчики. Это не просто интерактивный
отладчик, скорее это станок с программным управлением, гибким и мощным
интерфейсом. Отлаживать с его помощью "честные" программы - одно удовольствие,
но в плане антиотладки дела обстоят плохо. GDB даже не пытается сопротивляться и
работает через библиотеку ptrace (которая на самом деле никакая не библиотека, а
системный вызов). GDB принципиально неспособен отлаживать программы, которые не
хотят, чтобы их отлаживали. А такие программы мало-помалу начинают появляться.

Естественно, помимо GDB существуют и другие отладчики для никсов, например,
Lin-Ice, но поскольку антиотладочные технологии под UNIX только-только начинают
развиваться, в большинстве случаев вполне сгодиться и GDB.

IDA Pro

IDA Pro — это одновременно интерактивный дизассемблер и отладчик. Она
позволяет превратить бинарный код программы в ассемблерный текст, который может
быть применен для анализа работы программы. Правда, стоит сказать, что
встроенный ring-3 отладчик довольно примитивен. Он работает через MS Debugging
API (в NT) и через библиотеку ptrace (в UNIX), что делает его легкой добычей для
защитных механизмов. Но зато IDA Pro - интерактивный дизассемблер более чем с
десятилетней историей, первая версия которой увидела свет 6 мая 1991 года. Юрий
Харон вместе с Ильфаком начали работать в том направлении, куда еще никто не
вкладывал деньги. До этого дизассемблеры писались исключительно на пионерском
энтузиазме параллельно с изучением ассемблера и довольно быстро забрасывались.
Стоит ли удивляться, что парням удалось решить практически все фундаментальные
проблемы дизассемблирования, над которыми просто не хотели работать остальные
разработчики, зная, что быстрой отдачи не будет и проект потребует десятилетий
упорного труда. К пятой версии IDA Pro имела в своем арсенале все необходимое
для автоматической декомпиляции, причем не просто декомпиляции, а очень
качественной декомпиляции. На текущй момент последний резиз 5.5 от 12 июня.
Влюбленные в продукт пользователи генерят немало полезных плагинов, в том числе
поддерживающих разные скриптовые языки для написания сценариев в дополнение к
встроенному IDC. Например,
IdaRUB
добавляет поддержку Ruby, а
IDAPython — Python.
Тут надо сказать, что начиная с версии 5.4 IDAPython идет предустановленной в
дистрибутивы ИДЫ.

Hex-Rays

Дальше разработчики подумали и решили, что уж раз смогли получить
человеческий код на ассемблере, то неплохо дописать еще одну фичу, переводящую
китайскую ассемблерную грамоту в доступный и понятный листинг на языке Си.
Закипела напряженная работа, по ходу которой выявлялись все новые и новые
подводные камни, обход которых требовал времени, усилий и мозговой активности. В
итоге на свет появился , требующий обязательно установленную на компьютеру
ИДУ. Декомпилятору подается на вход бинарник, указывается ряд параметров, после
чего Hex-Rays выплевывает исходник на чистом C — в большинстве своем понятный и
доступный. Правда, спешить компилировать его обратно в бинарник не стоит, потому
как в большинстве случаев в момент компиляции ты увидишь столько ошибок, сколько
еще не видывал. Одна из причин — отсутствие поддержки в Hex-Rays ресурсов.

W32DASM

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

DeDe

PEiD

Любой коммерческий продукт должен быть достаточно хорошо защищен.
Разработчики намеренно использует разного рода упаковщики и так называемые
протекторы, которые применяют разного рода антиотладочные средства, максимально
препятствующие взлому программы. Обойти их можно, но для этого нужно четко
представлять, что использовалось для защиты программы, какой плагин для
отладчика использовать — и от этого "крутиться". Изящно определить название и
версию упаковщик способна небольшая утилита PEiD . Собственно, для этого она и
нужна.

PE Explorer

Программа для просмотра и редактирования PE-файлов — начиная с EXE, DLL и
ActiveX контролов, и заканчивая скринсейвверами SCR (Screensavers), апплетами
панели управления CPL, SYS и бинарниками для платформы Windows Mobile. По сути,
это не одна утилита, а целый набор тулз для того, чтобы посмотреть изнутри, как
работает программа или библиотека. Включает в себя просмотрщик заголовков,
экспорт вызовов API-функций, редактор ресурсов, дизассемблер.

Отладка программы

Отла́дка - этап разработки компьютерной программы , на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится:

  • узнавать текущие значения переменных ;
  • выяснять, по какому пути выполнялась программа.

Существуют две взаимодополняющие технологии отладки.

  • Использование отладчиков - программ, которые включают в себя пользовательский интерфейс для пошагового выполнения программы: оператор за оператором, функция за функцией, с остановками на некоторых строках исходного кода или при достижении определённого условия.
  • Вывод текущего состояния программы с помощью расположенных в критических точках программы операторов вывода - на экран , принтер , громкоговоритель или в файл. Вывод отладочных сведений в файл называется журналированием .

Место отладки в цикле разработки программы

Типичный цикл разработки, за время жизни программы многократно повторяющийся, выглядит примерно так:

  1. Программирование - внесение в программу новой функциональности, исправление ошибок в имеющейся.
  2. Тестирование (ручное или автоматизированное; программистом, тестером или пользователем; «дымовое», в режиме чёрного ящика или модульное …) - обнаружение факта ошибки.
  3. Воспроизведение ошибки - выяснение условий, при которых ошибка случается. Это может оказаться непростой задачей при программировании параллельных процессов и при некоторых необычных ошибках, известных как гейзенбаги .
  4. Отладка - обнаружение причины ошибки.

Инструменты

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

Инструменты отладки

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

Также полезными инструментами в руках программиста могут оказаться:

  • Профилировщики . Они позволят определить сколько времени выполняется тот или иной участок кода, а анализ покрытия позволит выявить неисполняемые участки кода.
  • API логгеры позволяют программисту отследить взаимодействие программы и Windows API при помощи записи сообщений Windows в лог.
  • Дизассемблеры позволят программисту посмотреть ассемблерный код исполняемого файла
  • Снифферы помогут программисту проследить сетевой трафик генерируемой программой
  • Снифферы аппаратных интерфейсов позволят увидеть данные которыми обменивается система и устройство.
  • Логи системы.

Инструменты, снижающие потребность в отладке

Другое направление - сделать, чтобы отладка нужна была как можно реже. Для этого применяются:

  • Контрактное программирование - чтобы программист подтверждал другим путём, что ему на выходе нужно именно такое поведение программы. В языках, в которых контрактного программирования нет, используется самопроверка программы в ключевых точках.
  • Модульное тестирование - проверка поведения программы по частям.
  • Статический анализ кода - проверка кода на стандартные ошибки «по недосмотру».
  • Высокая культура программирования, в частности, паттерны проектирования , соглашения об именовании и прозрачное поведение отдельных блоков кода - чтобы объявить себе и другим, каким образом должна вести себя та или иная функция.
  • Широкое использование проверенных внешних библиотек.

Безопасность программного кода и отладка

В программном коде может быть так называемое недокументированное поведение - серьёзные ошибки, которые не проявляются при нормальном ходе выполнения программы, однако весьма опасны для безопасности всей системы в случае целенаправленной атаки. Чаще всего это результат ошибок программиста. Наиболее известные примеры - это SQL-инъекция и переполнение буфера . В данном случае задача отладки это:

  • Выявление недокументированного поведения системы
  • Устранение небезопасного кода

Выделяют такие методы:

  • статический анализ кода. На этой фазе программа сканер ищет последовательности в исходном тексте, соответствующие небезопасным вызовам функций и т. д. Фактически идет сканирование исходного текста программы на основе специальной базы правил, которая содержит описание небезопасных образцов кода.
  • фаззинг. Это процесс подачи на вход программы случайных или некорректных данных и анализ реакции программы.
  • Reverse engineering (Обратная инженерия). Этот случай возникает, когда независимые исследователи ищут уязвимости и недокументированные возможности программы.

Литература

  • Стив Магьюир, «Создание надёжного кода» (Steve Maguire. Writing Solid Code . Microsoft Press, 1993)
  • Стив Мак-Коннел, «Совершенный код» (Steve McConnel. Code Complete . Microsoft Press, 1993)

См. также

Ссылки

  • Отладка AMD64 на уровне машинного кода с помощью отладчика dbx (рус.)

Wikimedia Foundation . 2010 .

Смотреть что такое "Отладка программы" в других словарях:

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

    отладка программы - контроль программы проверка программы программный контроль — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом Синонимы контроль программыпроверка… …

    отладка программы - отладка программы; отладка Процесс обнаружения и исправления ошибок в программе, а также установления факта ее правильного функционирования в машине …

    отладка (программы) - — [А.С.Гольдберг. Англо русский энергетический словарь. 2006 г.] Тематики энергетика в целом EN debugging … Справочник технического переводчика

    На ЭВМ обнаружение и исправление ошибок в программе для ЭВМ с помощью самой машины. Производится в 2 этапа: 1) автономная проверка отд. участков программы; 2) комплексная проверка путём решения по отлаживаемой программе неск. примеров, результаты … Большой энциклопедический политехнический словарь

    отладка - программы; отладка Процесс обнаружения и исправления ошибок в программе, а также установления факта ее правильного функционирования в машине … Политехнический терминологический толковый словарь

    отладка машинной программы - — [А.С.Гольдберг. Англо русский энергетический словарь. 2006 г.] Тематики энергетика в целом EN code refinement … Справочник технического переводчика

    ОТЛАДКА - (1) программы систематический процесс поиска и устранения (см.) в (см.), производимый по результатам её прогона на ЭВМ или с помощью специальной вспомогательной программы (отладчика), обеспечивающей заданный режим её отладки и выдающей… … Большая политехническая энциклопедия

    Отладка этап разработки компьютерной программы, на котором обнаруживают, локализуют и устраняют ошибки. Чтобы понять, где возникла ошибка, приходится: узнавать текущие значения переменных; и выяснять, по какому пути выполнялась программа.… … Википедия



Рекомендуем почитать

Наверх