
GCC hữu ích khi biên dịch mã nguồn. Có nhiều cờ (flag) khi dùng GCC, trong đó cờ -g dùng để tạo thông tin gỡ lỗi (debug). Cú pháp: gcc -g -o output-file input-program. Cờ này giúp developer dễ dàng hiểu và debug code.
Lợi ích của cờ GCC -g
1. Tạo Stack Trace
Stack trace báo cáo các khung stack hoạt động khi chương trình chạy. Khi chương trình crash, stack trace chỉ ra điểm code bị lỗi, trình tự sự kiện dẫn đến lỗi, giúp xác định và sửa nhanh.
2. Kiểm tra biến (Variable Inspection)
Thông tin debug cho phép xem giá trị biến tại runtime, hiểu trạng thái chương trình trước khi lỗi xảy ra tại các điểm khác nhau.
3. Thông tin ký hiệu (Symbolic Information)
Cờ -g thêm thông tin ký hiệu liên kết mã nguồn với file nhị phân: số dòng, tên biến. Dễ dàng ánh xạ thực thi chương trình về mã gốc để phân tích, debug.
4. Điểm dừng có điều kiện (Conditional Breakpoints)
GDB dùng thông tin debug từ -g để tạo breakpoint tạm thời. Developer định nghĩa điều kiện dừng chương trình, dễ dàng kiểm tra đoạn code gây lỗi thay vì xem toàn bộ.
Ví dụ thực tế
File nguồn linuxhint.c. Biên dịch với -g:
gcc -g -o demo1 linuxhint.c

File nhị phân demo1 chứa thông tin debug. Chạy GDB:

Trong GDB, đặt breakpoint tại dòng 15, chạy chương trình, kiểm tra giá trị biến:

Nhờ cờ -g, ta dễ dàng làm việc với debugger và thông tin debug cụ thể.
Kết luận
Cờ GCC -g sinh thông tin debug giúp phân tích và sửa lỗi chương trình. Bài viết trình bày lợi ích và ví dụ sử dụng với GDB.
Tác giả

Denis Kariuki
Khoa học máy tính, đam mê Networking và Cyber Security. Yêu thích terminal và Linux.