tl; dr: Щоб відповісти на ваше конкретне запитання, -g3"включає додаткову інформацію, таку як визначення макросів ... Деякі налагоджувачі підтримують розширення макросу при використанні -g3", хоча -gця додаткова інформація не включає.
Більш широка відповідь полягає в тому, що gcc підтримує чотири рівні інформації про налагодження, від -g0(інформація про налагодження відключена) до -g3(максимальна інформація про налагодження).
Вказання -gеквівалентно -g2. Цікаво, що документи gcc мало говорять про те, що інформація -g/ -g2включає чи виключає:
Попросіть інформацію про налагодження, а також використовуйте рівень, щоб вказати, скільки інформації. Типовий рівень - 2. Рівень 0 взагалі не дає інформації про налагодження. Таким чином, -g0 заперечує -g.
Рівень 1 виробляє мінімальну інформацію, достатню для того, щоб робити зворотні матеріали в частинах програми, які ви не плануєте налагоджувати. Сюди входять описи функцій та зовнішніх змінних та таблиці номерів рядків, але немає інформації про локальні змінні.
Рівень 3 включає додаткову інформацію, таку як усі макрозначення, наявні в програмі. Деякі налагоджувачі підтримують розширення макросів при використанні -g3.