Получить функции, вызываемые с помощью GDB - PullRequest
1 голос
/ 04 мая 2010

Я использую GDB для понимания программы на C ++. Я поставил перерыв в середине бега, который выглядит примерно так:

перерыв main.cpp: 500

и я хотел бы посмотреть, какие функции были вызваны ранее. Я попробовал "backtrace", но он показывает только информацию о main, так как предыдущие вызовы предыдущих функций уже завершены.

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

Спасибо

1 Ответ

1 голос
/ 04 мая 2010

Сценарий GDB может быть решением вашей проблемы.

Создайте скрипт, который ставит точку останова для каждой, возможно, вызываемой функции. При разрыве печатает стек с помощью 'bt' и продолжает выполнение.

Вы должны поставить другую точку останова в main.cpp: 500, чтобы выйти из отладки.

b 'main.cpp::500'
commands 1
    detach
    quit
end

break 'A::f1()'
break 'A::f2()'
while true
continue
bt
end



Вы можете запустить скрипт так:

gdb --command ./gdbscript.gdb fpmanager 

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...