Как мне остановить продолжение в GDB - PullRequest
19 голосов
/ 14 августа 2010

Я впервые использую GDB. Я бегу

$ gdb

тогда я бегу

attach <mypid>

тогда я вижу, что мой процесс застрял (что, вероятно, нормально). Теперь я хочу, чтобы он продолжал работать, поэтому я запускаю

continue

и мой процесс продолжается но отсюда я застрял, если я хочу снова посмотреть мой текущий след стека и т. д. Я не мог выйти из продолжения ... Я попытался Ctrl - D и т. д. у меня ничего не получалось ... (было только предположение).

Ответы [ 3 ]

16 голосов
/ 27 января 2011

Вы должны прервать процесс, который подключен к GDB.Не прерывайте сам GDB.Прервите процесс с помощью ctrl-c в терминале, в котором процесс был запущен, или отправьте процесс SIGINT с помощью команды kill -2 procid.С procid идентификатором присоединяемого процесса.

5 голосов
/ 14 августа 2010

Control + C в процессе gdb вернет вас в командную строку.

4 голосов
/ 14 августа 2010

Вот краткое учебное пособие по GDB , а также полное руководство по GDB .

Смысл отладки заключается в проверке интересных / подозрительных частей программы. Точки останова позволяют вам остановить выполнение в каком-либо месте источника, а точки наблюдения позволяют вам останавливаться при изменении интересных данных.

Простые примеры:

(gdb) break my_function
(gdb) cont

Это вставит точку останова в начале my_function, поэтому, когда выполнение программы входит в функцию, программа будет приостановлена, и вы получите ответ GDB, и сможете проверить состояние программы .Или вы можете шаг через код.

(gdb) watch my_var
(gdb) cont

То же самое, но теперь программа будет остановлена ​​в любом месте, которое изменяет значение my_var.

Бесстыдный плагин - вот ссылка на мою презентацию GDB в NYC BSD User Group .Надеюсь, это поможет.

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