tl; dr: Để trả lời câu hỏi cụ thể của bạn, -g3
"bao gồm thông tin bổ sung như định nghĩa macro ... Một số trình gỡ lỗi hỗ trợ mở rộng macro khi bạn sử dụng -g3
", trong khi -g
không bao gồm thông tin bổ sung này.
Câu trả lời rộng hơn là gcc hỗ trợ bốn cấp độ thông tin gỡ lỗi, từ -g0
(thông tin gỡ lỗi bị vô hiệu hóa) đến -g3
(thông tin gỡ lỗi tối đa).
Chỉ định -g
tương đương với -g2
. Thật kỳ lạ, các tài liệu gcc nói rất ít về những thông tin -g
/ -g2
bao gồm hoặc loại trừ:
Yêu cầu thông tin gỡ lỗi và cũng sử dụng mức độ để chỉ định lượng thông tin. Mức mặc định là 2. Mức 0 không tạo ra thông tin gỡ lỗi nào cả. Do đó, -g0 phủ định -g.
Mức 1 tạo ra thông tin tối thiểu, đủ để tạo dấu vết trong các phần của chương trình mà bạn không định gỡ lỗi. Điều này bao gồm các mô tả về hàm và các biến bên ngoài, và bảng số dòng, nhưng không có thông tin về các biến cục bộ.
Cấp độ 3 bao gồm thông tin bổ sung, chẳng hạn như tất cả các định nghĩa vĩ mô có trong chương trình. Một số trình gỡ lỗi hỗ trợ mở rộng macro khi bạn sử dụng -g3.