Что такое отладчик linux

Как отлаживать программы на языке C в Linux с помощью отладчика GDB

Оригинал: How to debug C programs in Linux using gdb
Автор: Himanshu Arora
Дата публикации: 16 января 2017 г.
Перевод: А.Панин
Дата перевода: 7 марта 2017 г.

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

Но перед тем, как двинуться дальше, стоит упомянуть о том, что все инструкции и примеры, приведенные в данной статье, были протестированы в системе Ubuntu 14.04 LTS. В статье был использован пример кода на языке C; в качестве командной оболочки использовалась командная оболочка Bash (версии 4.3.11); также стоит сказать о том, что для отладки тестовой программы использовался отладчик GDB версии 7.7.1.

Основные аспекты использования GDB

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

На следующем шаге следует убедиться в том, что отладчик GDB установлен в вашей системе. Если он не установлен и вы используете основанный на Debian дистрибутив, такой, как Ubuntu, вы можете установить данный инструмент с помощью следующей команды:

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

Хотя данная команда и инициирует запуск отладчика GDB, ваша программа не начнет исполняться сразу же после его запуска. В этот момент у вас имеется возможность задать параметры отладки. Например, вы можете установить точку останова, сообщающую отладчику GDB о том, что следует приостановить исполнение программы на строке с определенным номером или функции.

Для того, чтобы инициировать исполнение вашей программы, вам придется выполнить следующую команду GDB:

Стоит упомянуть и о том, что в том случае, если вашей программе нужно передать некие аргументы командной строки, вы можете передать их вместе с данной командной. Например:

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

Пример использования GDB

Теперь вы имеете базовое представление об отладчике GDB и принципе его использования. Поэтому предлагаю рассмотреть пример и применить полученные знания на практике. Это код примера:

Проблема заключается в том, что после запуска скомпилированного кода выводится следующее сообщение об ошибке:

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

Теперь следует обратить внимание на то, что в процессе исполнения программы выводится сообщение об ошибке «floating point exception» и, как многие из вас наверняка знают, данная ошибка обычно связана с делением произвольного значения на ноль. Помня об этом, я помещаю точку останова в строку под номером 11, где осуществляется деление. Это делается следующим образом:

Теперь я прошу GDB начать исполнение программы:

При достижении точки останова в первый раз GDB выводит следующую информацию:

В результате случается следующее:

Да, приведенный выше вывод подтверждает, что системный сигнал генерируется именно в этой строке. Окончательное подтверждение происходит при попытке повторного исполнения команды s :

Вы можете отлаживать свои программы с помощью GDB аналогичным образом.

Заключение

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

Источник

Краткий гайд по использованию GDB

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

GDB — переносимый отладчик проекта GNU, который работает на многих UNIX-подобных системах и умеет производить отладку многих языков программирования, включая Си, C++, Free Pascal, FreeBASIC, Ada, Фортран, Python3, Swift, NASM и Rust.

Почему именно GDB? Всё легко, он уже установлен на многих UNIX-подобных системах, лёгок в использовании и поддерживает много языков. Работа с ним оказывается очень лёгкой, а также его можно подключить к VSCode и другим редакторам кода (Включая Vim, NeoVim (ясное дело), Emacs, Atom и далее)

Подготовка файлов

Для примера мы возьмём файлы .cpp и будем проходиться по ним вдоль и поперёк.

Для того чтобы нам пройтись по такому файлу нам нужно скомпилировать его с помощью G++ с использованием флага -g (это действительно важно, без этого флага, программа не будет корректно работать в GDB).

Python-файл вы можете продебажить с помощью этой команды:

Для Java вы просто можете использовать jdb, который уже идёт в комплекте c JDK.

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

Использование GDB

Как только мы зашли в GDB нам выводится следующее сообщение:

Последняя строка говорит о том, нормально ли запустился файл.

Далее запускаем программу с помощью комманды r :

Также вы можете включить TUI, с помощью комбинации клавиш

Для того, чтобы посмотреть на какой мы сейчас строке, нужно написать f :

Для того, чтобы сделать шаг, нужно нажать n (от слова next):

Как мы видим GDB сразу пропускает пустые строки (или строки с комментариями) и переходит к следующей строке.
Предположим, что у нас есть функция, при нажатии n наш отладчик быстро пройдет функцию, не заходя в неё, чтобы зайти в функцию нужно сделать «шаг внутрь» (step-in) или просто клавиша s :

(В примере нет функции, однако шаг step-in все равно будет работать и с обычными инициализациями, условиями и циклами)

Чтобы узнать какие переменные (локальные) сейчас инициализированны в программе нужно написать комманду info locals :

Чтобы вывести только одну переменную, нужно написать print имя_переменной :

Мы можем также изменить переменную с помощью set :

Мы можем также следить за переменными с помощью watch :

Также, если нужно можно посмотреть что в данный момент находится в регистрах ( info registers ):

Чтобы посмотреть какие в данный момент есть breakpoints (точки останова) нужно написать info breakpoints :

Чтобы удалить точку останова del breakpoint_num :

Чтобы прыгнуть к следующей точке останова нужно нажать c :

Мы можем вызывать функции из программы (локальные) с помощью call :

Чтобы продолжить выполнение функции и остановить программу когда она (функция) завершится нужно написать finish или fin :

Стоит уточнить, что нельзя использовать finish в главном методе.

Чтобы завершить выполнение программы, нужно написать kill :

Также можно написать help в любой момент и получить краткую справку, как пользоваться отладчиком

Источник

Что такое отладчик linux

Программа GDB предоставляет все перечисленные возможности. Она называется отладчиком на уровне исходного текста, создавая иллюзию, что вы выполняете операторы C++ из вашей программы, а не машинный код, в который они действительно транслируются.

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

или одной командой:

Обе последовательности команд приводят к созданию исполняемого файла myprog.

Чтобы выполнить полученную программу под управлением gdb, введите

вы увидите командное приглашение GDB:

Это очень простой, но эффективный тексовый интерфейс отладчика. Его вполне достаточно, чтобы ознакомиться с основными командами gdb.

Как только возникает командное приглашение, вы можете использовать следующие команды: help command

выводит краткое описание команды GDB. Просто help выдает список доступных разделов справки;

запускает Вашу программу с определенными аргументами командной строки. GDB запоминает переданные аргументы, и простой перезапуск программы с помощью run приводит к использованию этих аргументов;

производит эффект, обратный up;

выводит значение E в текущем окне программы, где E является выражением C++ (обычно просто переменной). Каждый раз при использовании этой команды, GDB нумерует ее упоминание для будущих ссылок. Например:

если программа запущена через оболочку shell, Ctrl-c немедленно прекращает ее выполнение. В GDB программа приостанавливается, пока ее выполнение не возобновится;

(gdb) break MungeData Breakpoint 1 at 0x22a4:

file main.C, line 16.

Команда break main остановит выполнение в начале программы.

вы можете установить точки останова на определенную строку исходного кода:

(gdb) break 19 Breakpoint 2 at 0x2290:

file main.C, line 19.

(gdb) break utils.C:55 Breakpoint 3 at 0x3778:

file utils.C, line 55.

Когда вы запустите программу и она достигнет точки останова, то увидите сообщение об этом и приглашение, например:

Breakpoint 1, MungeData (A=0x6110, N=7) at main.c:16

удаляет точку останова с номером N. Если опустить N, будут удалены все точки останова;

продолжает обычное выполнение программы;

выполняет текущую строку программы и останавливается на следующем операторе для выполнения;

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

выполняет команды next без остановки, пока не достигнет конца текущей функции.

Источник

Как пользоваться gdb

В сегодняшней статье мы рассмотрим как пользоваться gdb для отладки и анализа выполнения программ, написанных на Си. Попытаемся разобраться с основными возможностями программы.

Как пользоваться gdb

1. Установка gdb

Обычно, отладчик устанавливается вместе с другими инструментами для сборки программного обеспечения. Для установки всего необходимого в Ubuntu или Debian достаточно выполнить:

sudo apt install build-essential

Для того чтобы установить отладчик отдельно, выполните:

sudo apt install gdb

В CentOS или Fedora команда установки будет выглядеть следующим образом:

sudo dnf install gdb

А для Arch Linux надо выполнить:

Теперь отладчик gdb установлен и вы можете его использовать.

2. Компиляция программы

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

#include
int main() <
int var1 = 0;
int var2 = 2;
char greeting[] = «Hello from losst\n»;
printf(«%s», greeting);
>

Затем вы можете её выполнить:

3. Запуск отладчика

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

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

4. Запуск программы

Для того чтобы запустить программу надо воспользоваться командой run в консоли gdb. Просто выполните:

И программа будет запущена и выполнена. Если вам надо передать программе какие-либо аргументы, то следует их передать команде run, например:

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

Программа сообщает на какой строчке исходного кода возникла проблема. Чтобы посмотреть весь исходник выполните команду list:

Для того чтобы вызвать ошибку Segmentation Fault и проверить как это работает можете добавить в программу такие строки и перекомпилировать её:

char *buffer = malloc(sizeof(char) * 10);
while(1) <
*(++buffer) = ‘c’;
>

Тут мы выделяем из памяти массив символов размером 10 элементов и заполняем его и память, которая находится за ним символами «с», пока программа не упадёт.

5. Точки останова

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

Например, давайте установим точку останова на восьмой строчке исходника:

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

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

Тогда выполнится следующая строка кода в программе. Если надо войти в функцию и посмотреть что в ней происходит следует использовать команду step:

Для отладки циклов можно устанавливать точки останова на основе условия, например, на 11-той строке, если значение переменной var1 будет 20:

(gdb) break 11 if var1==20

Чтобы этот пример заработал добавьте в код цикла следующую строчку, как на снимке:

Посмотреть все установленные точки останова можно такой командой:

6. Вывод информации

А для вывода значений аргументов функции:

Вывести значение определённой переменной можно с помощью print:

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

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

7. Изменение информации

С помощью команды set можно изменить значение переменной прямо во время выполнения программы. Например:

(gdb) break 7
(gdb) run
(gdb) set var2 = 20
(gdb) print var2

8. Вывод типа

С помощью команды ptype вы можете вывести тип переменной. Например:

(gdb) break 7
(gdb) run
(gdb) ptype var2

9. Просмотр адресов

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

#include
#include
#include
int main(int argc, char *argv[]) <
int var1 = 0;
int var2 = 2;
char *buffer = malloc(sizeof(char) * 10);
while(var1

Запустите отладчик и установите точку останова на девятой строке и запустите программу:

Теперь вы можете вывести адреса всех переменных в памяти с помощью символа &. Например:

(gdb) print &argc
(gdb) print &var1
(gdb) print &buffer
(gdb) print buffer

10. Просмотр памяти

С помощью команды x или eXamine можно посмотреть содержимое памяти, по определённому адресу. Например, смотрим содержимое переменной var2:

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

Также можно указать размер выводимого блока:

Мы пытались вывести переменную типа int. Она занимает обычно четыре байта. Для её корректного вывода используйте такие параметры:

Ещё можно указать количество блоков, которые надо выводить, например два:

Но поскольку там уже не наша переменная, эти данные не имеют смысла. Аналогично всё работает с строками, символами и другими значениями. Только обратите внимание, что если вы будете выводить переменную не одним блоком, то на результат повлияет порядок расположения байт. Значение будет выводиться задом на перед.

11. Справка по программе

Мы рассмотрели основные возможности отладчика gdb. Но если этого вам не достаточно, вы можете посмотреть справку по любой команде программы в самой программе. Для этого используйте команду help. Например, для команды exemine:

Выводы

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

Источник

Русские Блоги

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

оригинал:https://www.cnblogs.com/lidabo/p/4377545.html

1. Используйте printf для отладки

Printf(“valriable x has value = %d\n”, x)

Более сложные приложения для отладки, такие как:

#define BASIC_DEBUG 1

#define EXTRA_DEBUG 2

#define SUPER_DEBUG 4

#if (DEBUG &EXTRA_DEBUG)

2. Отладка с помощью gdb

Трассировка стека с обратной трассировкой

3. Программа инструмента статического анализа splint

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

4. Инструмент анализа производительности выполнения программы prof / gprof

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

5. Отладка памяти

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

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

С ростом популярности XP люди уделяют все больше и больше внимания предварительному проектированию, пост-внедрению и тестированию всего программного обеспечения. Естественно, в результате этого процесса получается высококачественное программное обеспечение. Некоторые даже утверждают, что XP устранит отладчик! В этом, конечно, есть смысл, но с учетом нынешних реалий это все еще идеал. В повседневной работе инструменты отладки по-прежнему необходимы. В Linux инструментом отладки является не только gdb, но и множество других инструментов отладки, каждый из которых имеет свои сильные стороны и направленность. В этой статье представлены несколько инструментов отладки, обычно используемых автором:

Язык C / C ++ в основном используется для разработки приложений под Linux. Ошибки памяти, такие как утечки памяти и выход за пределы памяти, несомненно, являются одной из самых неприятных проблем. glibc предоставляет два решения для устранения ошибок памяти:

Другой метод проще. Glibc уже предоставляет реализацию по умолчанию для первого решения. Все, что вам нужно сделать, это вызвать две функции mtrace / muntrace в определенном месте. Их прототипы функций следующие:

Вы можете спросить, где лучше всего настроить эти две функции? Однозначного ответа нет, это зависит от конкретной ситуации. Для небольших программ mtrace вызывается при входе в main, а muntrace вызывается при выходе из основной функции. Для крупномасштабного программного обеспечения это может записать слишком много информации и будет медленнее анализировать эти записи.В настоящее время вы можете вызывать на обоих концах подозреваемого кода.

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

После запуска программы используйте инструмент mtrace для анализа информации истории распределения памяти, и вы сможете узнать место ошибки памяти (mtrace находится в пакете glibc-utils).

При программировании рекомендуется проверять возвращаемое значение функции. Для стандартных функций C, таких как glibc, недостаточно проверить возвращаемое значение. Вам также необходимо проверить значение errno. Такие процедуры часто бывают длительными и недостаточно краткими. В то же время может быть из-за лени, большинство программ не делают такие проверки.

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

Некоторые из этих инструментов чрезвычайно полезны для отладки, например:

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

Вы можете использовать addr2line для преобразования адреса машины в соответствующую позицию кода.

Вы можете использовать nm для просмотра различных символов в целевом файле или исполняемом файле.

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

Теперь загрузка исполняемого файла ELF возложена на голову ld-linux.so.2. Вы можете спросить, а какое отношение это имеет к отладчику? несколько. Например, в Linux экспортируются все нестатические функции / глобальные переменные в разделяемых библиотеках.Что еще хуже, в языке C нет концепции пространства имен, что делает имена функций легко конфликтующими. В нескольких совместно используемых библиотеках ошибки, вызванные конфликтами имен, найти труднее. В это время вы можете наблюдать за процессом загрузки исполняемых файлов в ld-linux.so, установив переменную среды LD_DEBUG, и вы можете получить от нее много справочной информации. Значение LD_ DEBUG следующее:

Для настоящего отладчика gdb уникален для Linux. Он имеет разнообразную упаковку, символьный интерфейс, графический интерфейс, автономную работу и интегрирован в IDE. Gdb мощен, и графический интерфейс gdb проще в использовании, но эта функция, несомненно, имеет некоторые ограничения. Я считаю, что большинство экспертов по-прежнему желают использовать символьный интерфейс. Gdb слишком распространен, поэтому я не буду здесь об этом говорить.

Я считаю, что многие люди использовали два инструмента, BoundsChecker (Compuware) и Purify (IBM) под win32. Их функции настолько мощны, что их невозможно выполнить, перегружая функцию управления памятью. Они вставляют свой собственный код отладки во время компиляции.

Gcc также имеет расширение, которое реализует более мощные функции проверки, вставляя отладочный код во время компиляции. Конечно, это требует перекомпиляции gcc, вы можете перейти кhttp://sourceforge.net/projects/boundschecking/Загрузите патч gcc. Переносимость очень хорошая, автор применил ее в проекте платформы ARM, эффект хороший.

Жалко, что valgrind в настоящее время поддерживает только платформу x86, чего, конечно, достаточно для большинства ситуаций.

Ты можешь пойти вhttp://valgrind.org/Скачайте последнюю версию.

Инструмент отладки языка C на платформе Linux!

Please note that tools listed here are suggestions of the author. This list is not a standard one. Changes have to be done in it depending upon the nature, scope and details of the application to be developed.
Debugging Tools

The debug memory allocation or Dmalloc library is a freeware debugging tool which has been specially designed as a drop in replacement for the system’s malloc, realloc, calloc, free and other memory management routines while providing powerful debugging facilities configurable at runtime. It makes changes during compile time and donot add runtime changes in binary. These facilities include such things as memory-leak tracking, fence-post write detection, file/line number reporting, and general logging of statistics. The library is reasonably portable having been run successfully on at least the following operating systems: AIX, BSD/OS, DG/UX, Free/Net/OpenBSD, GNU/Hurd, HPUX, Irix, Linux, MS-DOG, NeXT, OSF, SCO, Solaris, SunOS, Ultrix, Unixware, Windoze, and even Unicos on a Cray T3E. It has full support for programs the debugging of POSIX threads.

The package includes the library, configuration scripts, debug utility application, test program, and documentation.

Valgrind is a GPL distributed system for debugging and profiling x86-Linux programs. I can also be helpful for programs for platforms other than x86 since behavior of x86 binary is similar to other binaries. The accompanying tools with Valgrind automatically detect many memory management and threading bugs, avoiding hours of frustrating bug-hunting, making programs more stable. It supports a through detailed profiling to help speed up the programs.

The Valgrind distribution includes four tools: two memory error detectors, a thread errordetector, and a cache profiler.

Electric Fence is a freeware library that can be used for C programming and debugging. It can be linked at compile time and it will warn about possible problems such as freeing memory that doesn’t exist, etc. It is basically a memory profiling tool. However currently it is available only on HP-Unix platform (I am not very sure though).

This is the Gnome Debugger which comes as a freeware support package with freeware Linux distribution like Red Hat, Slacware, and Debian etc. It has full support of many languages like C, C++, and Perl etc. It helps to debug the binaries of these languages in modes like single step, multiple step or complete run. It also has provisions of setting break points and trace value.

It is helpful for stub testing, functional flow checking and bound checking. Further this is readily available with all flavours of Linux andUnix platforms and is amply supported in user community.

Insight is a graphical user interface to GDB, the GNU Debugger written in Tcl/Tk by at Red Hat, Inc. and Cygnus Solutions Insight provides all features provided by GDB along with Graphical debugging interface replacing traditional command based interface.

MemProf is a free ware memory Profiling and memory leak detection tool which comes as an addendum to common Linux distributions. It can generate a profile how much memory was allocated by each function in the program. It can scan memory and find blocks that have been allocated but are no longer referenced anywhere (dead code).

MemProf works by pre-loading a library to override the C library’s memory allocation functions and does not require recompiling the program. One advantage MemProf has over some other similar tools that are available is that it has a nice GUI front-end and is relatively easy to use.

I am Nikhil Bhargava from Delhi, India. I am a Computer Engineer currently working in C-DOT, India for past one year. Comments and Suggestions are always welcome.

10.3 Инструменты графической отладки

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

Я занимаюсь разработкой приложений для Linux более года. Я чувствую, что это очень нерегулярно и подражает. Я готов систематически изучать разработку для Linux. Прежде всего, начните с изучения инструментов отладки. Ниже приводится введение в инструменты отладки Linux из Интернета, готовые к изучению Использование этих инструментов.

«Если вы хотите преуспеть, вы должны сначала отточить свои инструменты». Теперь мы резюмируем некоторые общие инструменты отладки.

【1】
Имя: MEMWATCH
Функция:
1. MEMWATCH поддерживает ANSI C
2. Предоставляет журнальные записи результатов.
3. Может обнаруживать двойное освобождение
4. Без ошибок
5. Неосвобожденная память (неиспользованная память),
6. Переполнение, потеря значимости и т. д.
Ссылки:
【1】:
http://blog.csdn.net/lengxingfei/archive/2006/08/09/1040800.aspx
【2】
Имя: YAMD
Функция:
1. Найдите динамические проблемы, связанные с распределением памяти в c и c ++
Ссылки:
【1】
http://www.cs.hmc.edu/

【4】
Имя: strace
Функция:
1. Отображение системных вызовов, выполняемых программами пользовательского пространства.
2. Отобразите параметры и возвращаемое значение вызова.

【5】
Имя: gdb
Функция:
1. Запустите программу.
2. Разрешить программе останавливаться в указанном месте указанного файла.
3. Просмотрите значения переменных программы.
4. Измените связанные переменные и пути во время выполнения программы.

【9】
Название: Purify
Функция: инструмент проверки памяти
Ссылки:

【10】
Имя: pc-lint
Функция: средство обнаружения статического кода C / C ++
Ссылки:
【1】
http://dev.yesky.com/134/2593634.shtml

【12】
Имя: boundercheck
Функция: проверка на утечку памяти

【13】
Имя: valgrind
Функция:
1. Проверьте наличие ошибок памяти.
Ссылки:

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

Углубленный анализ инструмента отладки Linux lsof

Инструмент кроссплатформенного анализа захвата веб-пакетов Rythem

Отслеживание проблем утечки памяти YAGAC

Трассировщик стека исключений C ++ libcsdbg

Инструмент отладки программ GDB

Инструмент визуальной отладки DDD

Инструмент для отладки программ strace

Детектор утечки памяти Визуальный детектор утечки

Средство диагностики времени выполнения Valgrind

Инструмент графической отладки KDbg

[Поделиться] Инструмент отладки программ OllyDbg

Отладчик C / C ++ LLDB

[Бесплатно] Инструмент отладки оконных приложений Managed Spy

Инструмент для отладки программ Linux XBuildStudio

Расширенная версия терминального интерфейса GDB CGDB

cgdb можно рассматривать как улучшенную версию терминального интерфейса gdb.По сравнению с визуальной студией под Windows, его функции очень легкие и не слишком сложные, и они могут выполняться в терминале.Дополнительная информация о CGDB

Отладчик EDB (отладчик Эвана)

Графический отладчик OpenGL BuGLe

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

Вспомогательное ПО для разработки программного обеспечения uuSpy

Инструмент для тестирования ядра Linux CrackerJack

Инструмент для анализа PE файлов с открытым исходным кодом pev

Средство обнаружения ошибок памяти на языке C memwatch

Библиотека C для трассировки программ PinkTrace

BASH Debugger

Инструмент отслеживания производительности программы LTTng

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

Инструмент отладки программ ltrace

Отладчик и трекер Linux KGTP

Библиотека помощника отладки DAL

Плагин захвата обратного вызова TLS от Ollydbg TLSCatch

C-библиотека для внедрения ошибок libfiu

инструмент pstack lsstack

vim-ruby-debugger

vim-ruby-debugger Это плагин для отладки программ Ruby на vim.Дополнительная информация о vim-ruby-debugger

Компиляция и отладка удаленного GDB BVRDE под windows

Демо-версия анти-отладки Pafish

skpd используется для выгрузки процесса в исполняемый файл ELF и его выполнения.Дополнительная информация о skpd

Termdebug

Инструмент анализа функций памяти LMDBG

инструмент отладки php ydb

Распределенный многопоточный инструмент контрольных точек DMTCP

Сборщик мусора bdwgc

Инструмент отладки программ C / C ++ libdwarf-dwarfdump

Источник

Понравилась статья? Поделиться с друзьями:

Не пропустите наши новые статьи:

  • Что такое отладка программы
  • что такое отладка программы что называется тестом
  • что такое отладка программы в информатике
  • что такое отладка кода в программировании
  • Что такое отладка и тестирование программы

  • Операционные системы и программное обеспечение
    0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest
    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии