Как установить условную точку останова в операторе возврата глобально?

У меня есть код, полный функций, таких как:

bool f_i()
{
if (!f_0()) {
return false;
}
if (!f_1()) {
return false;
}
// ...
if (!f_n()) {
return false;
}
return true;
}
// etc...

На каком-то шаге выполнения некоторый вызываемый абонент может вернуться false, а также false распространяется через всех абонентов. В настоящее время сложно писать сообщения об ошибках (код быстро меняется). Во время отладки чрезмерно иметь сообщения об ошибках перед каждым return false;,

Можно ли установить условный (условие: скажем, функция возврата false) точка останова на return Устав во всем мире, используя GDB?

3

Решение

На каком-то шаге выполнения некоторый вызываемый может вернуть false

Как я понимаю, вы хотите найти первую функцию, которая вернула false внутри f_i(), Ты можешь использовать обратная отладка за это.
Вы можете:

  1. завершить текущее выполнение кадра

    (GDB) плавник

  2. шаг назад, если возвращаемое значение false

    (GDB) обратный шаг

  3. если вам нужно, вы можете продолжать идти назад, глубже в false вызовы распространения

    (GDB) обратный плавник
    (GDB) обратный шаг

1

Другие решения