Как автоматически запустить исполняемый файл в 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здорово, когда вы делаете некоторые вещи низкого уровня.