Russian Qt Forum

Qt => Qt-инструментарий => Тема начата: enumerator от Марта 24, 2012, 21:22



Название: Отладка сложных вызовов функций
Отправлено: enumerator от Марта 24, 2012, 21:22
Добрый день. Интересует следующий вопрос. Можно ли как-то настроить qt creator или gdb таким образом, чтобы при отладке конструкций вида
Код:
void f( int first, int second )
{}

int g()
{ return 1; }

int h()
{ return 2; }

int main()
{
    f( g(), h() );
    return 0;
}
в точке вызова функции f() после возврата из функции h отладчик вновь попадал в код main в точку перед входом в g? В существующей версии, по крайней мере у меня, если при отладке зайти в h, дойти до ее конца и нажать f10, то мы пропустим вызовы g и f и окажемся в точке перед самым выходом из main. Данный вопрос интересует по той причине, что зачастую при вычислении аргументов создаются временные объекты и лазать по исходникам stdlibc++ в ожидании завершения этого процесса и входа в целевую функцию очень не хочется, как не хочется и по каждому такому случаю ставить новый breakpoint.


Название: Re: Отладка сложных вызовов функций
Отправлено: andrew.k от Марта 24, 2012, 23:47
так жми F11


Название: Re: Отладка сложных вызовов функций
Отправлено: enumerator от Марта 25, 2012, 10:20
Так в том то и дело, что приходится до посинения F11 жать, посетив при этом все потроха библиотечных и собственных функций, а хочется, чтобы по нажатию F10 возвращалось в точку вызова.


Название: Re: Отладка сложных вызовов функций
Отправлено: andrew.k от Марта 25, 2012, 18:26
Так в том то и дело, что приходится до посинения F11 жать, посетив при этом все потроха библиотечных и собственных функций, а хочется, чтобы по нажатию F10 возвращалось в точку вызова.
В параметрах отладчика поставь галку "пропускать известные этапы при пошаговой отладке".


Название: Re: Отладка сложных вызовов функций
Отправлено: enumerator от Марта 25, 2012, 22:01
Она и так стоит. Как я понимаю, она отключает заход в некоторые функции из заранее предопределенного списка. Это не совсем то, чего хочется. Хочется, чтобы отладчик "ходил" по коду как в Visual Studio, возвращаясь в точку вызова после вычисления каждого следующего аргумента, т.е. просто немного поменять логику его работы. Возможно, для этого есть какая-нибудь консольная команда самого gdb.