Книга: Основы программирования в Linux

Трассировка стека

Трассировка стека

Программа была остановлена при выполнении функции sort в строке 23 исходного файла debug3.c. Если при компиляции вы не включили в программу дополнительную отладочную информацию (cc -g), то не сможете увидеть, где программа дала сбой, и использовать имена переменных для просмотра данных.

Увидеть, как вы добрались до этого места, можно с помощью команды backtrace:

(gdb) backtrace
#0 0x0804846f in sort (a=0x804a040, n=5) at debug3.c:23
#1 0x08048583 in main() at debug3.c:37
(gdb)

Это очень простая программа и трассировка у нее короткая, т.к. вы не вызывали много функций из других функций. Вы только видите, что sort была вызвана из main в строке 37 того же файла debug3.c. Обычно проблема гораздо сложнее, и команда backtrace применяется для определения маршрута, который привел к месту ошибки. Эта информация очень полезна при отладке функций, вызываемых из множества разных мест.

У команды backtrace есть сокращенная форма bt и для совместимости с другими отладчиками есть команда where, выполняющая ту же функцию.

Оглавление книги


Генерация: 1.292. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз