- Run, Kill, Stop
- r | run → стартуем
- kill → убиваем текущий процесс
- Ctrl+c → прерываем работу
- q | quit → выход из gdb
- Breakpoints / Watchpoints
- b | break ( <функция> | <файл>:<строка> | <адрес функции> ) → поставить breakpoint
- возможность установки breakpoint‘а на адрес функции очень полезна, когда надо попасть в одну из множества копий одной функции (например, статическая инлайн функция, объявленная в заголовочном файле)
- b <выражение> if <условие> → поставить условный breakpoint, аналогично установке cond для этого breakpoint‘a
- tb | tbreak → поставить breakpoint который сработает только 1 раз, а затем будет удален
- cond <N> <условие> → установить условие срабатывания breakpoint‘a номер N
- ( watch | rwatch | awatch ) <выражение> → установить watchpoint который сработает, если значение по адресу выражение ( изменяется | читается | читается/изменяется )
- например: (gdb) watch *((int*)0x0B0B0B) → следить за значением по адресу 0x0B0B0B
- info brakepoints → показать информацию о всех brakepoint‘ах и watchpoint‘ах
- disable <N> → выключить brakepoint или watchpoint под номером N
- d | delete [ <список номеров> ] → удалить breakpoint’ы и watchpoint’ы с номерами из списка, если список пуст — удалить все
- clear ( <функция> | <файл:строчка> ) → удалить breakpoint(s) привязанные к функции/файлу
- b | break ( <функция> | <файл>:<строка> | <адрес функции> ) → поставить breakpoint
- Continuing and Stepping
- n | next → следующий шаг выполнения (следующая строчка кода)
- s | step → углубляемся в стек выполнения (заходим внутрь вызываемых функций)
- c | continue → продолжаем работу программы
- Backtrace
- bt → показать Call stack текущий точки
- up → подняться на одну функцию вверх в текущем Call stack
- down → вниз по Call stack‘у на одну функцию
- Print context: lines, variables, expressions, functions
- l | list→ показать исходник вокруг текущей строчки
- p <переменная> | <выражение> → показать значение переменной, памяти, выражения
- set <переменная> = <значение> → установить <значение> для <переменной>
- info ( locals | args ) → показать значения ( локальных переменных | аргументов функции )
- call <функция> → вызвать функцию func()
- Directories
- cd <dir> → перейти в директорию dir
- pwd → показать текущую директорию
- dir | directory <dir> → добавить директорию dir в список где ищутся исходные файлы
- Threads
- set follow-fork-mode ( parent | child ) → куда идти при создании (fork) нового процесса: parent - оставаться в родителе, child - идти за сыновьим процессом




Discussion
Pingback: GNU Project debugger: инструкция по применению GDB | Девелоперские будни