Обычно я запускаю программу как:
./a.out arg1 arg2 <file
Я хотел бы отладить его с помощью gdb.
Я знаю функциональность set args
, но это работает только из приглашения gdb.
Обычно я запускаю программу как:
./a.out arg1 arg2 <file
Я хотел бы отладить его с помощью gdb.
Я знаю функциональность set args
, но это работает только из приглашения gdb.
Передайте аргументы команде run
из gdb.
$ gdb ./a.out
(gdb) r < t
Starting program: /dir/a.out < t
Вы можете сделать это:
gdb --args path/to/executable -every -arg you can=think < of
Магический бит --args
.
Просто введите run
в командной консоли gdb, чтобы начать отладку.
Если вы хотите иметь голую команду run
в gdb
для выполнения вашей программы с перенаправлениями и аргументами, вы можете использовать set args
:
% gdb ./a.out
(gdb) set args arg1 arg2 <file
(gdb) run
Мне не удалось добиться такого же поведения с параметром --args
, gdb
яростно избегает перенаправления, т.е.
% gdb --args echo 1 2 "<file"
(gdb) show args
Argument list to give program being debugged when it is started is "1 2 \<file".
(gdb) run
...
1 2 <file
...
Этот фактически перенаправляет ввод самого gdb, а не то, что мы действительно хотим здесь
% gdb --args echo 1 2 <file
zsh: no such file or directory: file
Запустите GDB в своем проекте.
Перейдите в каталог проекта, где вы уже скомпилировали исполняемый файл проекта. Выполните команду gdb и имя исполняемого файла, как показано ниже:
gdb projectExecutablename
Это запускает gdb, печатает следующее: GNU gdb (Ubuntu 7.11.1-0ubuntu1 ~ 16.04) 7.11.1 Copyright (C) 2016 Free Software Foundation, Inc. ................................................. Введите "apropos word" для поиска команд, связанных с "словом"... Чтение символов из projectExecutablename... сделано. (GDB)
Прежде чем запускать свою программу, вы хотите настроить свои контрольные точки. Команда break позволяет это сделать. Чтобы установить точку останова в начале функции с именем main:
(gdb) b main
Как только у вас появится приглашение (gdb), команда запуска запустит исполняемый файл. Если для отлаживаемой программы требуются любые аргументы командной строки, вы указываете их в команде запуска. Если вы хотите запустить мою программу в файле "xfiles" (который находится в папке "mulder" в каталоге проекта), вы должны сделать следующее:
(gdb) r mulder/xfiles
Надеюсь, это поможет.
Отказ от ответственности: это решение не мое, оно адаптировано из https://web.stanford.edu/class/cs107/guide_gdb.html Этот короткий справочник по gdb был, скорее всего, разработан в Стэнфордском университете.