Eclipse CDT в macOS имеет ошибку, которая вынуждает меня использовать файл .gdbinit для указания аргументов командной строки для программы на C для отладки (см. https://bugs.eclipse.org/bugs/show_bug.cgi?id=516027).). Существует также проблема с использованием gdb в целом наmacOS, для которого требуется установить параметр «startup-with-shell off» (см. Неизвестный сигнал окончания при использовании отладчика gdb ). Это прекрасно работает, если в параметрах командной строки нет пробелов.
Как я могу заключить в кавычки строки для "set args" в командных файлах GDB, когда установлен параметр "startup-with-shell off"?
Конкретный пример: я хочу передать два аргумента программе на C,с аргументом "ab", содержащим пробел:
a b
c
Каков синтаксис записи в файл .gdbinit, чтобы программа, вызываемая gdb, получала дваАргументы "ab" и "c" (без кавычек).
Я попробовал следующее:
set args "a b" c
Результат: Программа получает три аргумента, включая буквальные кавычки: "a
b"
c
set args a\ b c
RРезультат: Программа получает три аргумента, включая буквальную обратную косую черту: a\
b
c
Шаги для воспроизведения:
$ cat setargs.gdb
set startup-with-shell off
set args "a b" c
run
$ cat showargs.c
#include <stdio.h>
int
main(int argc, char *argv[])
{
int i;
printf("argc: %d\n", argc);
for (i = 0; i < argc; i += 1)
{
printf("arg %d: '%s'\n", i, argv[i]);
}
return 0;
}
$ gcc -o showargs showargs.c
$ gdb -x setargs.gdb showargs
GNU gdb (Ubuntu 8.1-0ubuntu3) 8.1.0.20180409-git
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from showargs...(no debugging symbols found)...done.
argc: 4
arg 0: '/home_disk/stm/CTEST/showargs'
arg 1: '"a'
arg 2: 'b"'
arg 3: 'c'
[Inferior 1 (process 22518) exited normally]
(gdb) quit