Ранее в заметке Основы использования отладчика WinDbg мы узнали, как можно отлаживать приложения под Windows. Теперь настало время познакомиться с отладчиком gdb, который позволяет делать все то же самое под Linux и другими *nix системами. Благодаря этой заметке вы узнаете, как при помощи gdb ставить брейкпоинты и смотреть значения локальных переменных, анализировать coredump’ы и вот это все.
Для комфортной отладки сначала нужно собрать программу с правильными флагами. Во-первых, необходимо указать флаг -g . Иначе программа будет собрана без отладочных символов и отлаживать ее придется в ассемблерном коде (что, впрочем, вполне выполнимо для программ, написанных на чистом Си). Во-вторых, рекомендуется отключить оптимизации при помощи флага -O0 , иначе некоторые переменные окажутся, что называется, optimized out, и вы не сможете посмотреть их значения при отладке.
Другими словами, при прочих равных программу лучше собирать как-то так:
gcc -O0 -g test.c -o test
Запускаем программу в отладчике:
Отладка Java кода в IDEA. Основные возможности отладчика.
gdb . / test
При необходимости передать программе какие-то аргументы можно так:
gdb —args . / test —ololo —trololo
Запуск с так называемом Text User Interface, интерфейсом на основе curses (мне лично он не нравится):
gdb -tui . / test
Еще можно прицепиться к уже работающему процессу по его id:
gdb -p 12345
Для анализа корок используем команду вроде такой:
gdb / path / to / prog / tmp / core_prog.1234
Чтобы корки вообще писались, систему нужно правильно настроить:
ulimit -c unlimited
sudo sysctl -w kernel.core_pattern= ‘/tmp/core_%e.%p’
Плюс в /etc/security/limits.conf пишем что-то вроде:
# где eax — имя вашего пользователя в системе
eax soft core 50000
eax hard core 500000
… а в /etc/sysctl.conf:
kernel.core_pattern = /tmp/core_%e.%p
Кстати, корки можно создавать «вручную» прямо из gdb при помощи команды:
generate-core-file
Для удаленной отладки на сервере выполняем команды:
sudo apt-get install gdbserver
gdbserver : 3003 myprog
На клиенте говорим откуда брать отладочные символы:
gdb -q myprog
target remote 10.110.0.10:3003
Заметьте, что в Ubuntu при попытке прицепиться к своим процессам без sudo вы можете получить ошибку вроде такой:
Could not attach to process. If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or
try again as the root user.
For more details, see /etc/sysctl.d/10-ptrace.conf
ptrace: Operation not permitted.
Для решения этой проблемы говорим:
sudo sh -c ‘echo 0 > /proc/sys/kernel/yama/ptrace_scope’
… а также правим /etc/sysctl.d/10-ptrace.conf:
kernel.yama.ptrace_scope = 0
Итак, тем или иным образом мы прицепились отладчиком куда надо. Теперь нам доступны следующие команды.
Для выполнения команды в gdb можно вводить либо всю команду целиком, либо только первые несколько букв. То есть, h , he и help или r , ru и run — это все одни и те же команды. Здесь я преимущественно буду использовать короткие версии, так как это то, что вы скорее всего будете использовать на практике. К тому же, соответствующие длинные версии обычно очевидны.
Как найти ошибку в коде Работа с отладчиком
Начать выполнение программы, если она еще не выполняется:
Продолжить выполнение программы:
Прервать выполнение в любой момент можно нажатием Ctr+C.
Отцепиться от программы, оставшись при этом в отладчике:
Выйти из отладчика (если цеплялись через -p , процесс продолжит работу):
Просмотр исходного кода программы:
l
l номер_строки
l откуда,докуда
Если вы отлаживаете программу не на том же сервере, на котором программа была собрана, на него нужно залить исходиники по тому же пути, что использовался на билд сервере, иначе листинг не будет работать.
Когда исходников под рукой нет, можно посмотреть ассемблерный код:
disassemble
Step — шаг вперед или несколько шагов вперед:
Next — как step, только без захода внутрь других методов и процедур:
Until — выполнить программу до указанной строчки:
Продолжить выполнение до возвращения из текущей процедуры:
backtrace
bt
Перемещение между фреймами стака:
Информация о текущем фрейме:
info frame
Показать аргументы в текущем фрейме:
Показать локальные переменные в текущем фрейме:
Источник: eax.me
Фундаментальные основы хакерства. Используем отладчик для анализа 64-разрядных программ в Windows
Помимо дизассемблирования, существует и другой способ исследования программ — отладка. Изначально под отладкой понималось пошаговое исполнение кода, также называемое трассировкой. Сегодня же программы распухли настолько, что трассировать их бессмысленно — мы моментально утонем в омуте вложенных процедур, так и не поняв, что они, собственно, делают. Отладчик не лучшее средство изучения алгоритма программы — с этим эффективнее справляется интерактивный дизассемблер (например, IDA).
«Фундаментальные основы хакерства»
Перед тобой уже во второй раз обновленная версия статьи «Знакомство с отладчиком» (первое обновление публиковалось в 2018 году в рамках цикла «Фундаментальные основы хакерства»). В прошлый раз текст Криса Касперски был переделан для соответствия новым версиям Windows и Visual Studio, а теперь обновлен с учетом отладки программ для 64-разрядной архитектуры. Читай также обновленную первую статью серии. Обе статьи доступны без платной подписки.
Цикл «Фундаментальные основы хакерства» с «апгрейдом» первых глав до x86-64 опубликован в виде книги, купить ее ты можешь на сайте издательства «Солон‑пресс».
Способности отладчиков
Первым делом надо разобраться в перечне основных функциональных возможностей типовых отладчиков (без этого невозможно их осмысленное применение):
- отслеживание обращений на запись, чтение и исполнение к заданной ячейке (региону) памяти, далее по тексту именуемое бряком (брейком);
- отслеживание обращений на запись и чтение к портам ввода‑вывода (уже неактуально для современных операционных систем, запрещающих пользовательским приложениям проделывать такие трюки, — это теперь прерогатива драйверов, а на уровне драйверов реализованы очень немногие защиты);
- отслеживание загрузки DLL и вызова из них таких‑то функций, включая системные компоненты (как мы увидим далее, это основное оружие современного взломщика);
- отслеживание вызова программных и аппаратных прерываний (большей частью уже неактуально — не так много защит балуется с прерываниями);
- отслеживание сообщений, посылаемых приложением окну;
- и, разумеется, контекстный поиск в памяти.
Как именно это делает отладчик, пока знать необязательно, достаточно знать, что он это умеет, и все. Куда актуальнее вопрос, какой отладчик умеет это делать.
Герои прошлого
В прошлом в качестве отладчика хакеры использовали широко известный SoftICE. Это был действительно мощный инструмент, и даже по прошествии многих лет лучше него ничего не было изобретено. Неоспоримым его преимуществом была возможность отладки ядра Windows с помощью одного компьютера.
Между тем, не без давления Microsoft, в 2006 году его разработка была прекращена. А поскольку SoftICE очень сильно зависел от операционной системы Windows, в более поздних ее версиях он просто не работает. Последней версией Windows, в которой можно пользоваться SoftICE, была Windows XP SP 2. В SP 3 он уже не функционировал, а в Vista и Windows 7 и подавно.
Хакеры, конечно, приуныли, но не стали посыпать голову пеплом, а начали изобретать альтернативные отладчики. Последовала эпоха расцвета новых отладчиков. Но какая картина на этом поле сейчас? Нет ни одного нового хорошего отладчика! Передовым среди всех был коммерческий Syser китайских разработчиков.
Ему пророчили светлое будущее, возможность заменить SoftICE, но где он сейчас? Может быть, пара копий сохранилась где‑то на файловых свалках, но он давно не развивается.
Сейчас по большому счету у хакера есть выбор только из двух по‑настоящему годных отладчиков: WinDbg и x64dbg. Последний годится лишь для исследования приложений пользовательского режима, тогда как с помощью WinDbg можно заниматься и ядерной отладкой Windows. Но в этом случае придется использовать два компьютера, объединенных проводом или по локальной сети.
Современный инструмент кодокопателя
Когда‑то хакеры пренебрегали WinDbg, но со временем он вырос и стал действительно мощным и полезным инструментом исследования кода. Не стоит забывать, что именно он используется командой разработки Windows. Для него можно изготавливать расширения путем подключаемых DLL. Начиная с Windows XP, движок отладки включен непосредственно в операционную систему. Он состоит из двух DLL: dbgeng. dll и dbghelp. dll . Кроме непосредственно средств отладки, в число которых входит сам WinDbg, его движок используется в том числе «Доктором Ватсоном» ( drwtsn32. exe ).
Средство отладки для Windows состоит из четырех приложений, использующих dbgeng. dll :
- cdb и ntsd — отладчики пользовательского режима с консольным интерфейсом. Они различаются только одним: при запуске из существующего консольного окна ntsd открывает новое консольное окно, a cdb этого не делает;
- kd — отладчик режима ядра с консольным интерфейсом;
- WinDbg может использоваться как отладчик пользовательского режима либо режима ядра, но не одновременно. У WinDbg есть графический интерфейс.
Следовательно, WinDbg представляет собой только оболочку для отладки с помощью движка.
Вспомогательный файл dbghelp. dll используется внешними тулзами для исследования внутренностей Windows, например отладчиком OllyDbg, программой Process Explorer за авторством Марка Руссиновича и прочими.
У WinDbg есть две версии: классическая и UWP. Первая устанавливается вместе с набором тулз Debugging Tools for Windows. Этот набор содержит две версии WinDbg. Одна предназначена для отладки 32-разрядных приложений, другая — 64-разрядных. Версию UWP можно скачать из Windows Store, она имеет только 32-битную версию.
Обе 32-разрядные версии абсолютно равноценны, не считая того, что в UWP продвинутый пользовательский интерфейс Windows 10. Кстати, весьма удобный при работе на большом экране.
Для наших экспериментов я буду применять UWP-версию. Разницы в их использовании практически нет, могут разве что немного различаться команды в пользовательском интерфейсе, именно надписи на элементах интерфейса, но не команды встроенного языка.
Способ 0. Бряк на оригинальный пароль
С помощью WinDbg загрузим ломаемый нами файл — passCompare1. exe — через пункт меню Launch Executable или Open Executable в классическом приложении. В дальнейшем я не буду приводить аналоги команд.
www
Сразу после открытия исполняемого файла WinDbg загрузит приложение, в окне Disassembly отладчика появятся дизассемблированные команды, а в окне Command отобразятся результаты их выполнения.
После создания окна приложения еще до вывода каких‑либо данных выполнение тут же прерывается на инструкции int 3 — это программная точка останова. Часто новички считают, что выполнение программы начинается с функции main или WinMain . Этому их учат в школе, либо они сами черпают такие сведения из учебников по C/C++. Конечно, это неправда.
Прежде чем попасть в функцию main конкретного приложения, процессор зарывается в дебри системного кода загрузчика образов, выполняет горы инструкций инициализации приложения внутри Windows, подключения библиотек и прочего. Поэтому произошедший бряк не означает вход в main нашей программы. Если взглянуть в окошко дизассемблера, мы увидим, что прерывание произошло в системной функции LdrpDoDebuggerBreak модуля ntdll .
Первым делом загрузим отладочную информацию для компонентов операционной системы. Для этого в командную строку введем
. symfix d: debugSymbols
Эта команда определяет папку, указанную в параметре, куда отладчик при необходимости загрузит отладочные символы для подсистем Windows. Затем надо отправить команду для загрузки или обновления файлов:
После этого WinDbg загрузит нужные данные с серверов Microsoft.
Кроме того, можно воспользоваться уже имеющейся отладочной информацией, для этого существует команда . sympath+ < путь к директории>. Если файл с отладочными символами находится в одной папке с исполняемым файлом, он подхватится автоматически. Еще можно использовать файлы исходного кода, но в таком случае проще воспользоваться отладчиком, входящим в среду разработки.
Давай попробуем натравить отладчик на дебажную версию passCompare1 и при достижении первой точки останова поставим бряк на функцию main :
bp passCompare1!main
Теперь продолжим выполнение командой g . Когда отладчик достигнет поставленной точки останова (начало функции main ), в окне дизассемблера увидим, что листинг разделен на сегменты, в заголовке которых находятся имена функций, в частности main .
В релизной версии исполняемого файла этого не будет. Если же мы поставим точку останова по адресу начала модуля и прибавим адрес точки входа, то мы попадем не в начало функции main , а в системный загрузчик — функцию mainCRTStartup , подготовленную компилятором.
Кроме Microsoft, мало кто предоставляет отладочные символы, не будем привыкать к легкой жизни, тем более WinDbg специально предназначен для отладки программ без отладочной информации и исходного кода. Будем применять его по назначению! Между тем, если приглядеться к окошку дизассемблера повнимательнее, можно заметить, что в отличие от дизассемблера dumpbin , который мы использовали в прошлой статье, WinDbg распознает имена системных функций, чем существенно упрощает анализ.
Точки останова могут быть двух типов: программные и аппаратные. С первыми мы уже встречались. В программе их может быть любое количество.
Для своей работы они модифицируют память исполняемого процесса, то есть в том месте, где должен стоять бряк, отладчик запоминает ассемблерную инструкцию и заменяет ее int 3 . Из‑за того что программная точка останова изменяет память, ее можно установить не везде. В этом заключается ее основной недостаток. Главной командой для установки программной точки останова является bp . Для получения списка установленных точек служит команда bl , а для удаления — команда bc , параметром которой является индекс точки останова. Звездочка в качестве параметра удаляет все бряки. Команды be и bd , соответственно, включают и выключают брейк‑пойнты.
Количество аппаратных точек останова, независимо от разрядности процессора, всегда четыре. Хотя в процессоре присутствуют восемь регистров отладки (DR-0 — DR-7), только первые четыре могут быть использованы для хранения адресов точек останова. Аппаратные бряки могут ставиться в любое место памяти процесса.
Таким образом, они лишены недостатка программных бряков. Остальные регистры предназначены для хранения условий доступа — срабатывания точек останова, например чтение, запись, исполнение. Малое количество — основной недостаток аппаратных бряков. Для установки аппаратной точки останова используется команда ba с тремя параметрами: тип доступа, размер и адрес.
Итак, мы рассмотрели небольшой список команд внутреннего языка отладчика WinDbg. Наверняка ты обратил внимание на их запись. В языке отладчика присутствуют три вида команд:
- встроенные команды служат для отладки процесса и записываются без лидирующего символа, к таким командам относятся g , bp , bd ;
- метакоманды управляют работой отладчика, перед ними ставится символ точки, например: . reload , . symfix , . cls ;
- команды‑расширения, загружаемые из внешних DLL, имеют в начале символ восклицательного знака, например: ! heap , ! dh .
Поиск адреса
Давай попробуем наскоро найти защитный механизм и, не вникая в подробности его функционирования, напрочь отрубить защиту. Вспомним, по какому адресу расположен в памяти оригинальный пароль. Заглянем в дамп секции . rdata , где хранится пароль. Исходный пароль myGOODpassword находится по смещению 0x140002280 . Попробуем вывести находящиеся по этому адресу в памяти данные:
dc 0x140002280
Существует большое количество команд для отображения содержимого памяти: da , db , dd и прочие. Мы использовали dc , потому что она показывает значения двойных слов и ASCII-символы. Что мы видим? Неинициализированные данные.
Раньше (до Windows Vista) кодокопателям было проще. Windows загружала образы в виртуальную память по определенному при компиляции адресу. В этом легко убедиться: запустим приложение в Windows XP, затем при помощи того же SoftICE узнаем адреса секций (команда mod -u ) и выпишем их. После перезагрузки системы и повторного запуска приложения увидим, что они останутся неизменными.
Начиная с Windows Vista, программы после перезапуска системы получают случайные адреса, а не те, что определены при компиляции. Поэтому нам придется самим искать секцию . rdata уже не на диске, а в памяти. Легко сказать, но сделать еще проще!
Найдем, по какому адресу расположен наш модуль в памяти. Для этого в отладчике введем lmf m passcompare1 . Второй параметр — имя модуля, адрес которого надо определить. В результате на своем компе я получил:
start end module name
00007ff7`159b0000 00007ff7`159b8000 passCompare1 passCompare1. exe
Отсюда следует, что начало модуля находится по адресу 0x7ff7159b0000 . После каждой перезагрузки системы модуль конкретного приложения проецируется в различные адреса. Теперь выведем карту памяти нашего модуля и получим сведения обо всех секциях PE-файла:
!dh passCompare1
Вывод команды довольно объемный. ! dh — в некотором роде аналог команды map32 из SoftICE, при этом первая предоставляет больше сведений. Найдем в выводе описание целевой секции . rdata :
Источник: xakep.ru
Отладчик
Компьютерная программа, используемая для тестирования и отладки других программ Самостоятельная отладка
A отладчик или инструмент отладки — это компьютерная программа, используемая для тестирования и отладки других программ («целевая» программа). Основное использование отладчика — запуск целевой программы в контролируемых условиях, которые позволяют программисту отслеживать выполняемые операции и отслеживать изменения в ресурсах компьютера (чаще всего в областях памяти, используемых целевой программой или операционной системой компьютера), которые могут указывать на код неисправности. Типичные средства отладки включают возможность запускать или останавливать целевую программу в определенных точках, отображать содержимое памяти, регистров ЦП или запоминающих устройств (например, дисковых накопителей) и изменять содержимое памяти или регистров для ввода выбранных тестовых данных, которые могут быть причиной неправильного выполнения программы.
В качестве альтернативы проверяемый код мог бы выполняться на имитаторе набора команд (ISS), методе, который дает большую мощность в его способности останавливаться при обнаружении определенных условий, но который будет обычно несколько медленнее, чем выполнение кода непосредственно на соответствующем (или том же) процессоре. Некоторые отладчики предлагают два режима работы, полное или частичное моделирование, чтобы ограничить это влияние.
«trap » возникает, когда программа не может нормально продолжить работу из-за ошибки программирования или неверных данных. Например, программа могла попытаться использовать инструкцию, недоступную в текущей версии CPU, или попыталась получить доступ к недоступной или защищенной памяти. Когда программа «перехватывает» или достигает заранее установленного условия, отладчик обычно показывает местоположение в исходном коде, если это отладчик исходного уровня или символический отладчик, который теперь обычно встречается в интегрированные среды разработки. Если это низкоуровневый отладчик или отладчик машинного языка, он показывает строку в дизассемблере (если он также не имеет онлайн-доступа к исходному источнику code и может отображать соответствующий фрагмент кода из сборки или компиляции).
Возможности
Обычно отладчики предлагают обработчик запросов, символ преобразователь, интерпретатор выражений и интерфейс поддержки отладки на верхнем уровне. Отладчики также предлагают более сложные функции, такие как выполнение программы шаг за шагом (пошаговое выполнение или анимация программы ), остановка (нарушение ) (приостанавливает программу для проверки текущего состояния) в некотором событии или указанной инструкции с помощью точки останова и отслеживает значения переменных. Некоторые отладчики могут изменять состояние программы во время ее работы. Также можно продолжить выполнение в другом месте программы, чтобы обойти сбой или логическую ошибку.
Те же функции, которые делают отладчик полезным для исправления ошибок, позволяют использовать его в качестве взлома программного обеспечения для обхода защиты от копирования, управления цифровыми правами и другие функции защиты программного обеспечения. Это часто также полезно в качестве инструмента общей проверки, покрытия ошибок и анализатора производительности, особенно если показаны длины пути инструкций. Ранние микрокомпьютеры с дисковыми хранилищами часто получали выгоду от возможности диагностики и восстановления поврежденных записей данных каталогов или реестра, восстановления файлов, помеченных как удаленные, или взлома защиты файлов паролем.
Большинство основных механизмов отладки, таких как gdb и dbx, предоставляют консольные интерфейсы командной строки. Внешние интерфейсы отладчика — это популярные расширения механизмов отладчика, которые обеспечивают интеграцию IDE, анимацию программ и функции визуализации.
Запись и воспроизведение отладки
Запись и воспроизведение отладки, также известная как «запись полета программного обеспечения» или «запись выполнения программы», фиксирует изменения состояния приложения и сохраняет их на диск в виде каждой инструкции в программа выполняется. Затем запись можно воспроизводить снова и снова и отлаживать в интерактивном режиме для диагностики и устранения дефектов. Отладка с записью и воспроизведением очень полезна для удаленной отладки и для устранения периодических, недетерминированных и других трудно воспроизводимых дефектов.
Обратная отладка
Некоторые отладчики включают функцию под названием «обратная отладка », также известная как «историческая отладка» или «обратная отладка». Эти отладчики позволяют перемещать выполнение программы назад во времени. Эта функция есть в различных отладчиках.
Microsoft Visual Studio (выпуск 2010 Ultimate, 2012 Ultimate, 2013 Ultimate и 2015 Enterprise) предлагает обратную отладку IntelliTrace для C #, Visual Basic.NET и некоторых других языков, но не C ++. Обратные отладчики также существуют для C, C ++, Java, Python, Perl и других языков. Некоторые из них с открытым исходным кодом; некоторые являются проприетарным коммерческим программным обеспечением. Некоторые обратные отладчики замедляют работу цели на порядки, но лучшие обратные отладчики вызывают замедление в 2 раза или меньше. Обратная отладка очень полезна для определенных типов проблем, но все еще широко не используется.
Зависимость от языка
Некоторые отладчики работают на одном конкретном языке, в то время как другие могут прозрачно обрабатывать несколько языков. Например, если основная целевая программа написана на COBOL, но вызывает подпрограммы языка ассемблера и подпрограммы PL / 1, отладчику, возможно, придется динамически переключать режимы на учитывать языковые изменения по мере их появления.
Защита памяти
Некоторые отладчики также включают защиту памяти, чтобы избежать нарушений памяти, таких как переполнение буфера. Это может быть чрезвычайно важно в средах обработки транзакций, где память динамически выделяется из «пулов» памяти для каждой задачи.
Аппаратная поддержка для отладки
Большинство современных микропроцессоров имеют по крайней мере одну из этих функций в их архитектуре ЦП, чтобы упростить отладку:
- Аппаратная поддержка одношагового режима программа, такая как флаг ловушки.
- Набор инструкций, отвечающий требованиям виртуализации Попека и Голдберга, упрощает написание программного обеспечения отладчика, которое работает на том же процессоре, что и отлаживаемое программное обеспечение; такой ЦП может выполнять внутренние циклы тестируемой программы на полной скорости и при этом оставаться под контролем отладчика.
- Внутрисистемное программирование позволяет внешнему аппаратному отладчику перепрограммировать тестируемую систему (например, добавляя или удаление контрольных точек инструкций). Многие системы с такой поддержкой ISP также имеют другую аппаратную поддержку отладки.
- Аппаратная поддержка кода и данных точек останова, таких как компараторы адресов и компараторы значений данных или, при значительно большем объеме работы, отказ страницы аппаратное обеспечение.
- JTAG доступ к аппаратным интерфейсам отладки, например, на процессорах архитектуры ARM или с помощью набора команд Nexus. Процессоры, используемые во встраиваемых системах, обычно имеют обширную поддержку отладки JTAG.
- Микроконтроллеры всего с шестью выводами должны использовать заменители JTAG с небольшим количеством выводов, такие как BDM, Spy-Bi-Wire или debugWIRE на Atmel AVR. DebugWIRE, например, использует двунаправленную передачу сигналов на выводе RESET.
Внешние интерфейсы отладчика
Некоторые из наиболее эффективных и популярных отладчиков реализуют только простой интерфейс командной строки (CLI) — часто для максимизации портативность и минимизация потребления ресурсов. Разработчики обычно считают отладку с помощью графического пользовательского интерфейса (GUI) более простой и продуктивной. Это причина появления визуальных интерфейсов, которые позволяют пользователям контролировать и управлять подчиненными отладчиками, работающими только с CLI, через графический интерфейс пользователя. Некоторые интерфейсы отладчика GUI разработаны для совместимости с различными отладчиками, работающими только с интерфейсом командной строки, в то время как другие предназначены для одного конкретного отладчика.
Список отладчиков
Некоторыми широко используемыми отладчиками являются:
- Arm DTT, ранее известный как Allinea DDT
- Eclipse API отладчика, используемый в ряде IDE : Eclipse IDE (Java) Nodeclipse (JavaScript)
- FirefoxJavaScript отладчик
- GDB — отладчик GNU
- LLDB
- Microsoft Отладчик Visual Studio
- Radare2
- TotalView
- Valgrind
- WDW, отладчик OpenWatcom
- WinDbg
Ранние отладчики миникомпьютер включают:
- Метод динамической отладки (DDT)
- Инструмент онлайн-отладки (ODT)
Более ранние отладчики мэйнфреймов включают (по дате выпуска):
- 1974 OLIVER CICS TEST / DEBUG
- 1980 SIMON BATCH TEST / DEBUG
- 1985 CA / EZTEST
- 1990 XPEDITER и Expediter CICS
Текущий мэйнфрейм отладчики:
- Debug Tool для z / OS
- XPEDITER и Expediter CICS
- z / XDC
См. также
- Портал компьютерного программирования
- Сравнение отладчиков
- Дамп ядра
- Отладчик ядра
- Список инструментов для статического анализа кода
- Отладчик памяти
- Анализатор пакетов
- Профилирование
- Отладка путешествия во времени
Ссылки
- Санжив Кумар Аггарвал; М. Сарат Кумар (2003). «Отладчики языков программирования». В Я. Срикант; Прити Шанкар (ред.). Справочник по проектированию компиляторов: Оптимизация и создание машинного кода. Бока-Ратон, Флорида: CRC Press. С. 295–327. ISBN 978-0-8493-1240-3.
- Джонатан Б. Розенберг (1996). Как работают отладчики: алгоритмы, структуры данных и архитектура. Джон Уайли и сыновья. ISBN 0-471-14966-7.
Цитаты
Внешние ссылки
Найдите debugger в Викисловаре, бесплатный словарь. |
- Инструменты отладки для Windows
- OpenRCE: различные ресурсы отладчика и плагины
- IntelliTrace MSDN, Visual Studio 2015
Источник: alphapedia.ru