Как остановить продолжение в GDB

Я в основном использую GDB в первый раз. Я запустил

$ gdb

тогда я запускаю

attach <mypid>

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

continue

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

Ответы

Ответ 1

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

Ответ 2

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

Ответ 3

Здесь короткий учебник GDB, и здесь полный GDB руководство.

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

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

(gdb) break my_function
(gdb) cont

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

(gdb) watch my_var
(gdb) cont

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

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