Есть ли способ выполнить выполнение в gdb до тех пор, пока функция не будет вызвана, а затем не будет приостановлена внутри этой функции? Мне больно использовать n
и s
для кода, с которым я работаю. Я бы предпочел nextFrame
и fin
, предположив, что существует nextFrame
, который взял меня в новую функцию. Было бы здорово, если бы nextFrame
мог сказать мне, когда мы только разматываем стек из текущей области, то есть мы не выполняем другой вызов функции, а затем он может приостановиться в последней строке текущей области.gdb продолжает выполнение до появления нового кадра в стеке вызовов
В принципе, я хочу просмотреть свою кодовую базу с точки зрения вызова, а не из строковой точки зрения.
P.S. Если предположить, что такое средство существует, я бы предположил, что его проблематично использовать с boost
. Например. если у меня есть строка, как boost::shared_ptr<MyType> a = foo();
, тогда она сначала остановится внутри кода boost
, прежде чем она закроется внутри foo()
. Это проблема, потому что меня не интересует код повышения и только хочу посмотреть, что внутри foo
.
P.S. Я тоже звонил. Интересно, возможно ли это в clang.
Вы можете настроить GDB так: установить точки останова для всех функций (символов), если у вас есть отладочная информация, или для автоматического перехода на вас и разрыва инструкций и эквивалентов 'call' и' ret'. Многочисленные реализации этих подходов существуют там. –
@MichaelFoukarakis Спасибо, это звучит интересно –