Как автоматически запустить исполняемый файл в GDB?
Я хотел бы иметь gdb
немедленно запустите исполняемый файл, как если бы я набрал " run"
(мотивация: мне не нравится печатать "run").
один из способов-передать команду gdb
такой:
$ echo run | gdb myApp
но проблема с этим подходом заключается в том, что вы теряете интерактивности с gdb
,
например. если точка останова срабатывает или myApp
ДТП, gdb
завершает работу.
Этот метод обсуждается здесь.
глядя на опции в --help
, Я не вижу способа сделать это, но возможно, я что-то упускаю.
5 ответов:
gdb -ex run ./a.out
Если вам нужно передать аргументы
a.out
:gdb -ex run --args ./a.out arg1 arg2 ...
изменить: Орион говорит, что это не работает на Mac OSX.
The
-ex
флаг был доступен сGDB-6.4
(выпущен в 2005 году), но OSX использует вилку GDB от Apple, а последний XCode для Leopard содержитGDB 6.3.50-20050815 (Apple version gdb-967)
, так что вам не повезло.дома тока
GDB-7.0.1
релиз является одним из возможных решений. Просто будьте уверены, чтобы прочитать этой.
Я бы использовал gdb-скрипт:
gdb -x your-script
здесь ваш скрипт содержится что-то вроде:
file a.out b main r
после этого у вас есть обычная интерактивная подсказка gdb
EDIT:
вот оптимизация для действительно ленивых:
- сохранить скрипт как
.gdbinit
наworking directory
.после этого вы просто запустите gdb как
gdb
... и gdb автоматически загружает и выполняет содержимое .файл gdbinit.
start
командаэта команда является еще одним хорошим вариантом:
gdb -ex start --args ./a.out arg1 arg2
это похоже на run, но также устанавливает временную точку останова в
main
и там останавливается.эта временная точка останова деактивируется после ее попадания.
starti
есть также связанный
starti
который запускает программу и останавливается на самой первой инструкции вместо этого, Смотрите также: остановка на первой машине код инструкции в GDBздорово, когда вы делаете некоторые вещи низкого уровня.