Подробнее о отладке с gdb
.Обязательно скомпилируйте весь ваш код с DWARF отладочной информацией (поэтому используйте g++ -Wall -Wextra -g
для компиляции с GCC ).
GDB extensible и вы можете определить свои gdb
команды при запуске в вашем файле инициализации, возможно .gdbinit
и поместить туда некоторые начальные команды.
Кстати, в Linux для отладки (то есть отладчик gdb
) используются средства ptrace (2) .И вы можете использовать gdb
неинтерактивно в командной строке, используя скрипты.
Как установить точки останова в самом коде
Я не рекомендуюдобавление специального кода C для точек останова.Так что не делайте этого в вашем C-коде.Но см. Также this .
Возможно, вам нужна библиотека обратной трассировки, например, libbacktrace * Ian Taylor ?
Я не могу использовать любой графический интерфейс дляотладка
Вам не нужно.Вы будете использовать gdb
в командной строке. С помощью соответствующего gdb
сценария вы можете даже использовать его неинтерактивно (например, в Makefile
)
Я только хочу отладить его с консоли, а не с помощью любой IDE.
Пожалуйста, поймите, что IDE s только прославили Редактор исходного кода s способензапуск других внешних инструментов (включая компилятор GCC и отладчик gdb
).Вам, разумеется, в Linux не требуется какая-либо IDE для запуска компилятора или отладчика (но IDE могут быть удобными , но не обязательными , для этого), потому что вы можете (и должен) запустить ваш компилятор, ваш отладчик, ваш инструмент автоматизации сборки в командной строке.
Поскольку файл программы, который я хочу отлаживать, имеет много заголовочных файлов, которые он импортирует, я не могучтобы сделать исполняемый файл
Вы должны сначала это исправить.Вам нужно сделать исполняемый файл .Кстати, «импорт» не задействован во время выполнения, поскольку заголовочные файлы актуальны только во время компиляции.Узнайте больше о препроцессоре cpp
.Вам, вероятно, следует вызвать GCC (например, компилятор g++
, поскольку у вас есть код C ++) с соответствующими параметрами препроцессора (иногда такие инструменты, как pkg-config
полезно для этого).Вы, вероятно, должны использовать некоторые средства автоматизации сборки , такие как GNU make
( с ваш Makefile
; см. this для вдохновения) или ниндзя .Вы можете добавить специальные команды gdb
в вашу процедуру сборки (например, с некоторыми дополнительными и конкретными правилами и / или рецептами в вашей Makefile
).