Я впервые использую GDB. Я запускаю
$ gdb
, затем запускаю
attach <mypid>
, затем вижу, что мой процесс застрял (что, вероятно, нормально). Теперь я хочу, чтобы он продолжал работать, поэтому я запускаю
continue
, и мой процесс продолжается но отсюда я застрял, если хочу снова посмотреть текущую трассировку стека и т. д. Я не смог продолжить работу ... Я попробовал Ctrl - D и т. д., но у меня ничего не получалось ... (было только предположение).
Вот краткое руководство по GDB , а вот полное руководство по GDB .
Целью отладки является проверка интересных / подозрительных частей программы. Точки останова позволяют остановить выполнение в некотором исходном местоположении, а точки наблюдения позволяют останавливать выполнение при изменении интересных данных.
Простые примеры:
(gdb) break my_function
(gdb) cont
Это вставит точку останова в начало my_function
, поэтому, когда выполнение программы входит в функцию, программа будет приостановлена, и вы получите приглашение GDB обратно, и сможете в проверять состояние программы . Или вы можете пройти через код.
(gdb) watch my_var
(gdb) cont
То же самое, но теперь программа будет остановлена в любом месте, которое изменяет значение my_var
.
Бесстыдный плагин - вот ссылка на мою презентацию GDB в NYC BSD User Group . Надеюсь это поможет.
Control+C в процессе gdb должно вернуть вас в командную строку.