Отладка программы без остановки - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть большая многопоточная программа, написанная на cpp и скомпилированная с помощью gcc. Время от времени я сталкиваюсь с ошибками во время выполнения. Есть ли способ присоединить gdb (или что-то еще) и попытаться посмотреть, что делает каждый поток, и, возможно, увидеть некоторые внутренние члены класса?

Дело в том, что я не хочу, чтобы gdb заморозил программу. Существуют чувствительные к времени детали, и зависание программы изменит ее поведение (и, возможно, приведет к ее аварийному завершению, если она будет достаточно продолжительной).

1 Ответ

0 голосов
/ 07 ноября 2018

Есть ли способ присоединить gdb (или что-то еще) и попытаться посмотреть, что делает каждый поток, и, возможно, увидеть некоторые внутренние члены класса?

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

Дело в том, что я не хочу, чтобы gdb заморозил программу.

Это хитрее: GDB может проверять только остановленные потоки.

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

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