Почему GDB зависает?

У меня есть приложение, которое я отлаживаю, и я пытаюсь понять, как работает gdb, и почему я иногда не могу пройти через приложение. Проблема, с которой я столкнулся, заключается в том, что gdb зависает, и процесс, к которому он подключен, переходит в неработающее состояние, когда я выполняю программу. После того, как gdb зависает, и мне нужно убить его, чтобы освободить терминал (ctrl-C не работает, я должен сделать это из другого окна терминала, получив идентификатор процесса для этого сеанса gdb и используя kill -9).

Я предполагаю, что gdb зависает, потому что он ждет, пока приложение остановится на следующей инструкции, и каким-то образом приложение завершит выполнение без того, чтобы gdb это идентифицировал. Но это всего лишь предположение с моей стороны на основании того поведения, которое я наблюдал до сих пор. Итак, мой вопрос: видел ли кто-нибудь подобное поведение раньше и / или мог ли он предположить, в чем может быть причина. Я думаю, это может помочь мне улучшить мою стратегию отладки.

Если это важно, я использую g ++ 4.4.3, gdb 7.1, работающий на Ubuntu 10.04 x86_64.

11
задан Gabriel Southern 23 January 2012 в 21:22
поделиться