Подтвердить что ты не робот

Как я могу выполнить внешние команды из командной строки gdb?

Я отлаживаю программу с помощью gdb. Всякий раз, когда я пропускаю точку останова или решаю добавить другую точку наблюдения, я должен убить процесс и повторить его. Чтобы прикрепить к нему существующий gdb, я использую attach <pid>. Однако я должен узнать pid нового процесса.

То, что я делаю сегодня, это приостановить gdb, получить pid с помощью ps -C <program_name>, а затем вернуться к gdb для его присоединения.

Есть ли способ запустить команду unix из командной строки gdb без выхода в оболочку, чтобы я мог сделать что-то подобное изнутри gdb:

attach `ps -C <program_name>`

Я работаю над linux.

4b9b3361

Ответ 1

(gdb) help shell
Выполните оставшуюся часть строка как команда оболочки. Без аргументы, выполните нижнюю оболочку.

После завершения вы можете использовать 'exit' для возврата в gdb.

Ответ 2

gdb$ shell

shell$ execute_your_commands 

shell$ exit

gdb$ you_have_returned_back_to_gdb_prompt

Ответ 3

Вы можете просто использовать shell, за которым следует команда, которую вы хотите выполнить, например:

gdb$ shell g++ tsort.c -o tsort

Это лишь краткая форма предыдущего ответа.

Ответ 4

Чтобы расширить принятый ответ, ярлык для shell равен !.

(gdb) help!

Выполните оставшуюся часть строки как команду оболочки. Без аргументов, запустите нижнюю оболочку.