Заключить в кавычки из руководства: Produce debugging information in the operating system's native format (stabs, COFF, XCOFF, or DWARF 2). GDB can work with this debugging information.
. Я не означаю быть прочитайте руководство, парень, но в этом случае, читая ручной раздел по-g ответит на Ваш вопрос. Согласно-o, Вы правы.
- g опция включает использование дополнительной отладочной информации, которую может использовать GDB. Вот пример кода C:
int main() {
int x = 1/0;
}
давайте скомпилируем его без-g опции и посмотрим вывод gdb:
$ gcc test.c -o test
test.c: In function ‘main’:
test.c:2:11: warning: division by zero [-Wdiv-by-zero]
$ gdb -q ./test
Reading symbols from /home/mariusz/Dokumenty/Projekty/Testy/test...(no debugging symbols found)...done.
(gdb) run
Starting program: /home/mariusz/Dokumenty/Projekty/Testy/test
Program received signal SIGFPE, Arithmetic exception.
0x080483cb in main ()
И теперь с-g опцией:
$ gcc -g test.c -o test
test.c: In function ‘main’:
test.c:2:11: warning: division by zero [-Wdiv-by-zero]
$ gdb -q ./test
Reading symbols from /home/mariusz/Dokumenty/Projekty/Testy/test...done.
(gdb) run
Starting program: /home/mariusz/Dokumenty/Projekty/Testy/test
Program received signal SIGFPE, Arithmetic exception.
0x080483cb in main () at test.c:2
2 int x = 1/0;
Как Вы видите, теперь существует информация о строке с ошибкой.
Это связано с отладкой:
(от man gcc
)
- g Производят отладочную информацию в собственном формате операционной системы (удары, COFF, XCOFF, или ЗАТМИТЕ 2). GDB может работать с этой отладочной информацией.
Можно выполнить отладчик на программе без отладочной информации в нем, но это похоже на попытку найти ключи в темноте. Например, Вы не можете установить точки останова:
(gdb) break 6
No symbol table is loaded.
Это - большая стычка.