2011-12-13 29 views
9

Làm cách nào để biết các lớp java được biên soạn có bao gồm siêu dữ liệu gỡ lỗi không?Làm cách nào để biết tệp .class nếu siêu dữ liệu gỡ lỗi được bao gồm?

Tùy chọn:

Nó sẽ được tốt đẹp nếu tôi có thể thấy nếu debug siêu dữ liệu là dòng, vars hoặc nguồn hoặc sự kết hợp của một số trong số họ.

Tìm thấy công cụ tốt để xem các tệp .class (http://www.codexterity.com/classexp.htm) nhưng đó là nơi tôi bị kẹt không chắc chắn nơi cần tìm. Cảm ơn bạn.

Trả lời

9

Về cơ bản, có bytecode trong file class mà có thông tin gỡ lỗi.

Nếu bạn chạy javap -v trên tệp lớp, bạn sẽ thấy thông tin gỡ lỗi khả dụng. Nó là giá trị biên dịch một lớp thử nghiệm đơn giản với các cài đặt tùy chọn khác nhau -g và xem kết quả với javap.

Xem Check if Java bytecode contains debug symbols để biết thêm.

1

Thông thường chỉ có số dòng được bao gồm nhưng bạn có thể sử dụng tùy chọn '-g' tùy chọn này tạo tất cả thông tin gỡ lỗi, bao gồm các biến cục bộ.

Đọc về Debug information in Java .class files

+0

Câu hỏi của tôi là nhiều hơn về quá trình đảo ngược, làm thế nào tôi có thể từ tập tin .class biết nếu nó được biên dịch với -g hoặc có thể -g: none (không có thông tin gỡ lỗi) tùy chọn? Cảm ơn các liên kết. –

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