2012-10-29 33 views
16

Tôi đã học được lập trình cho một vài năm, và sử dụng debug frequently.But Tôi vẫn không hiểu nguyên tắc lõi của debug, làm thế nào nó hoạt động? Làm thế nào để singe dòng gỡ lỗi (bước vào) thực hiện?Nguyên tắc gỡ lỗi là gì?

lấy ví dụ ngôn ngữ java.

CPU làm gì để thực hiện gỡ lỗi?

JVM làm gì để thực hiện gỡ lỗi?

eclipse làm gì để gỡ lỗi triển khai?

Có thể là ba nội dung tôi liệt kê ở trên không liên quan gì đến việc gỡ lỗi. Tôi chỉ đoán nó. Tôi đã googled một thời gian và không đạt được gì hữu ích cho tôi (tất nhiên, gỡ lỗi chính nó là phức tạp), tôi hy vọng giải thích đơn giản hơn.

Cảm ơn.

+3

Để tham khảo: http://docs.oracle. com/javase/1.4.2/docs/guide/jpda/architecture.html Đọc về 'JPDA' nên trả lời JVM làm gì để thực hiện Debug. –

Trả lời

10

Mỗi bộ xử lý có thiết kế gỡ lỗi riêng.

Đối với trường hợp CPU x86, bộ xử lý có 6 thanh ghi gỡ lỗi lưu trữ các điểm ngắt và ngắt điều kiện. Xem qua bài viết này về cơ chế gỡ lỗi CPU Intel x86: http://en.wikipedia.org/wiki/X86_debug_register

Đối với trường hợp của cơ chế gỡ lỗi Java, xem: http://docs.oracle.com/javase/7/docs/technotes/guides/jpda/architecture.html như được chỉ ra bởi Mukul Goel trong luồng nhận xét trong câu hỏi.

+1

Thông tin đẹp !! –

1

Để tạo điều kiện gỡ lỗi (sử dụng điểm ngắt và như vậy), trình biên dịch chèn một số thông tin bổ sung vào đầu ra tuân thủ nó tạo ra (tức là tệp nhị phân hoặc tệp JVM bytecode trong trường hợp Java). Thông tin bổ sung này cho phép ánh xạ từng dòng của đầu ra được biên dịch tới tệp nguồn tương ứng.

Tôi chưa trả lời tất cả các phần trong câu hỏi của bạn, nhưng hy vọng đủ để giúp bạn bắt đầu. Kiểm tra các nguồn lực:

http://en.wikipedia.org/wiki/Debug_symbol

How does a debugger work?

Các vấn đề liên quan