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