2011-03-13 21 views
5

Tôi đang sử dụng Eclipse 3.5 và tôi đã đính kèm src.zip vào các cài đặt chung của tôi trong Eclipse. Windows -> Tùy chọn -> Java -> Các tệp JRE đã cài đặt -> rt.jar - Tệp đính kèm nguồn - ...../jdk/src.zipLàm cách nào để gỡ lỗi các tệp .class trong ECLIPSE?

Tôi thành công có thể bước vào lõi java thư viện các tệp .class và xem mã nguồn. Tôi xây dựng một Class sử dụng LinkedList và tôi đã thiết lập một breakpoint bên trong lớp LinkedList.

Khi tôi gỡ lỗi breakpoint trong mã nguồn của tôi (dự án của tôi) đang làm việc tốt nhưng khi tôi cần phải bước vào .classes lib java lõi tôi nhận được lỗi sau đây trong tôi Eclipse eclipse error

Không thể cài đặt breakpoint trong java.util.LinkedList do thiếu thuộc tính Number line. Sửa đổi các tùy chọn complier để tạo các thuộc tính số dòng.

Tôi đã kiểm tra cài đặt trình duyệt của mình trong Tùy chọn và tìm thấy tất cả các tùy chọn được kiểm tra đúng. enter image description here Sẽ tuyệt vời nếu ai đó có thể giúp tôi giải quyết vấn đề này.

Xin cảm ơn trước.

Trả lời

6

Bạn có thể có bộ biên dịch bao gồm thông tin gỡ lỗi trong tệp lớp CỦA BẠN, nhưng các tệp lớp trong rt.jar không được biên dịch theo cách đó. Bạn cần phải biên dịch lại tất cả các nguồn cho các lớp trong rt.jar (không phải cho mờ nhạt của trái tim), hoặc download a debug build of the jdk.

+0

Làm việc như một sự quyến rũ. Cảm ơn nhiều. Đã tìm kiếm điều này. – AKh

+0

Xin chào David ... Bạn có thể nói cách thay đổi trong lõi Java. Lớp và biên dịch chúng và được sử dụng bởi dự án của tôi không? Ví dụ: Tôi muốn sửa đổi biến private - header - thành công khai để gán các giá trị trong lớp LinkedList cho mục đích nghiên cứu của tôi? Tôi nghiên cứu hành vi của LinkedList ... Sẽ đánh giá cao ngay cả khi u chỉ cho tôi một số tài nguyên. – AKh

+0

Tôi không nghĩ đó là một ý tưởng tốt, và nếu bạn chỉ muốn truy cập các biến riêng cho nghiên cứu, bạn có thể làm điều đó thông qua sự phản chiếu. Ví dụ: trừ xử lý ngoại lệ: Danh sách danh sách = new LinkedList (); list.add ("foo"); Field header = list.getClass(). GetDeclaredField ("tiêu đề"); header.setAccessible (true); System.out.println (header.get (danh sách)); –

2

blog posts này đưa ra một danh sách toàn diện các điểm kiểm tra

Thực hiện theo các bước này nếu bạn đang biên soạn sử dụng Eclipse IDE

enter image description here

  1. Đến windows > preferences > Java > compiler màn hình.
  2. Đảm bảo rằng thêm thuộc tính số dòng vào các tệp đã tạo (được sử dụng bởi trình gỡ rối) được chọn.
  3. Tạo lại và thử thêm điểm ngắt ahd hy vọng nó sẽ hoạt động cho bạn.

Lưu ý cho kiến ​​xây dựng

Thực hiện theo các bước này nếu bạn đang biên soạn sử dụng tiện ích ANT:

  1. Kiểm tra file build.xml và chắc chắn rằng thuộc tính debug được đặt thành true trong tác vụ javac
  2. Ngoài ra, nếu bạn đang sử dụng JBoss làm máy chủ ứng dụng, thì hãy thực hiện re rằng bạn đã mở một cổng cho ràng buộc socket của kết nối máy từ xa . Nếu không thì chỉ cần đảm bảo rằng C:/jboss/bin/run.bat có một mục với:
    "set JAVA_OPTS=%JAVA_OPTS% -Xdebug –Xrunjdwp:transport=dt_socket,address=5000,server=y,suspend=n" để mở cổng 5000 để nghe tất cả các kết nối ổ cắm để gỡ lỗi/ứng dụng java từ xa.
  3. Tạo lại và thử thêm điểm ngắt ahd hy vọng nó sẽ hoạt động cho bạn.
2

Bạn không nên sử dụng JRE với JDR src được đính kèm dưới dạng lớp JRE không phù hợp để gỡ lỗi.

Để Eclipse tìm kiếm môi trường Java và sau đó chọn JDK từ danh sách kết quả. Môi trường Java này sẽ có src.zip đính kèm chính xác và bạn sẽ có thể điều tra.

Lưu ý rằng các lớp học thậm chí JDK không có thông tin gỡ lỗi đầy đủ có sẵn, vì vậy bạn không thể nhìn thấy các biến địa phương vv

(Ngoài ra, bảng điều khiển các thiết lập trình biên dịch chỉ áp dụng cho đang của bạn. Các lớp JRE đang pregenerated và bảng điều khiển không ảnh hưởng đến chúng).

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