GDB - Biểu tượng gỡ lỗi

A Debugging Symbol Tableánh xạ các lệnh trong chương trình nhị phân đã biên dịch sang biến, hàm hoặc dòng tương ứng của chúng trong mã nguồn. Ánh xạ này có thể là:

  • Chỉ dẫn chương trình ⇒ tên mặt hàng, loại mặt hàng, tệp gốc, số dòng được xác định.

Bảng biểu tượng có thể được nhúng vào chương trình hoặc được lưu trữ dưới dạng tệp riêng biệt. Vì vậy, nếu bạn định gỡ lỗi chương trình của mình, thì bạn phải tạo một bảng biểu tượng mà sẽ có thông tin cần thiết để gỡ lỗi chương trình.

Chúng ta có thể suy ra các dữ kiện sau về bảng ký hiệu:

  • Một bảng ký hiệu hoạt động cho một phiên bản cụ thể của chương trình - nếu chương trình thay đổi, một bảng mới phải được tạo.

  • Các bản dựng gỡ lỗi thường lớn hơn và chậm hơn các bản dựng bán lẻ (không gỡ lỗi); bản dựng gỡ lỗi chứa bảng ký hiệu và thông tin phụ trợ khác.

  • Nếu bạn muốn gỡ lỗi một chương trình nhị phân mà bạn không tự biên dịch, bạn phải lấy các bảng ký hiệu từ tác giả.

Để GDB có thể đọc từng dòng thông tin từ bảng ký hiệu, chúng ta cần biên dịch nó khác một chút. Thông thường, chúng tôi biên dịch các chương trình của mình dưới dạng:

gcc hello.cc -o hello

Thay vì làm điều này, chúng ta cần biên dịch với cờ -g như hình dưới đây:

gcc -g hello.cc -o hello