2010-10-11 43 views
25

Tôi muốn biết gdb hoạt động như thế nào trong nội bộ. ví dụ: Tôi biết một ý tưởng ngắn gọn rằng nó sử dụng ptrace() gọi hệ thống để theo dõi chương trình truy tìm. Nhưng tôi muốn biết nó xử lý tín hiệu như thế nào, nó chèn mã mới như thế nào, và những thứ tuyệt vời khác như vậy.gdb hoạt động như thế nào?

+6

này đề cập đến một số khía cạnh quan trọng của internals GDB: www.gnuarm.com/pdf/gdbint.pdf – zengr

+3

@zengr: Tại sao bạn không gửi đó như là một câu trả lời? – DarkDust

Trả lời

6

Cách duy nhất bạn sẽ tìm hiểu là bằng cách nghiên cứu source.

Bạn cũng có thể tự xây dựng và gỡ lỗi chính nó. Bước qua mã và bạn sẽ biết chính xác cách hoạt động của mã.

Đọc nguồn GDB không phải dành cho những người yếu tim - nó chứa đầy các macro và sử dụng rất nhiều libbfd, điều khó hiểu.

Nó phải, bởi vì nó là di động (và đặc biệt, xây dựng và hoạt động trên nền tảng mà không có ptrace() ở tất cả).

+0

Tôi nghĩ bạn có nghĩa là [chock đầy đủ] (http://en.wiktionary.org/wiki/chock_full) – sje397

+0

http://www.cs.utah.edu/dept/old/texinfo/gdb/gdbint.html#SEC1 – zengr

16

Kiểm tra GDB Internals Manual, bao gồm một số khía cạnh quan trọng. Còn có một số PDF version cũ hơn của tài liệu này.

Từ hướng dẫn:

tài liệu Tài liệu này bên trong của debugger GNU, gdb. Nó bao gồm mô tả các thuật toán và hoạt động chính của gdb, cũng như các cơ chế điều chỉnh gdb cho các máy chủ và mục tiêu cụ thể.

+0

[Hướng dẫn nội bộ GDB] (https://sourceware.org/gdb/download/onlinedocs/gdbint/) không tìm thấy zengr .. – sree

+2

Cảm ơn Sree! Đã sửa. – zengr

3

Taken từ gdbint.pdf:

Nó có thể được thực hiện hoặc như breakpoint phần cứng hoặc phần mềm như breakpoint:

  • breakpoint phần cứng đôi khi có sẵn như là một tính năng gỡ lỗi BUILTIN với một số khoai tây chiên. Thông thường các công việc này bằng cách đăng ký dành riêng để lưu trữ địa chỉ điểm ngắt. Nếu PC (viết tắt của bộ đếm chương trình) bao giờ khớp với giá trị trong một breakpoint đăng ký, CPU sẽ đưa ra một ngoại lệ và báo cáo cho GDB.
  • Khả năng khác là khi trình mô phỏng đang được sử dụng; nhiều bộ mô phỏng bao gồm mạch đồng hồ xem các đường địa chỉ sắp ra từ bộ vi xử lý và buộc nó dừng lại nếu địa chỉ khớp với địa chỉ của điểm ngắt.
  • Khả năng thứ ba là mục tiêu đã có khả năng làm điểm ngắt bằng cách nào đó; ví dụ, một màn hình ROM có thể thực hiện các điểm ngắt phần mềm riêng của nó. Vì vậy, mặc dù đây không phải là phần cứng điểm ngắt, từ quan điểm của GDB, chúng hoạt động tương tự;
  • Điểm ngắt phần mềm yêu cầu GDB thực hiện công việc phần nào hơn. Lý thuyết cơ bản là GDB sẽ thay thế hướng dẫn chương trình bằng một cái bẫy, phân chia bất hợp pháp hoặc một số hướng dẫn khác sẽ gây ra một ngoại lệ và sau đó khi nó gặp phải, GDB sẽ loại trừ và dừng chương trình. Khi người dùng nói tiếp tục, GDB sẽ khôi phục hướng dẫn ban đầu, một bước, lắp lại bẫy và tiếp tục.
Các vấn đề liên quan