2009-06-26 34 views
7

Tôi có một quá trình java chạy trên một hộp Linux, nhưng nó không thể được bắt đầu/bắt đầu lại trong chế độ gỡ lỗi. Tôi đọc về lệnh jsadebugd và khởi động trình nền, nhưng tôi muốn kết nối với nó từ trình gỡ lỗi IDE (có thể là Eclipse) hoặc có thể là YourKit hoặc jconsole. Tôi có thể làm cái này như thế nào? JVM từ xa là 1.6+.Tôi có thể kết nối với tiến trình jsadebugd trên máy từ xa từ trình gỡ lỗi Eclipse/IDE không?

+2

Bạn có thể tìm giải pháp cho vấn đề của mình ở đâu? – ekeren

Trả lời

1

tôi giả kể từ khi bạn đề cập Yourkit và khác công cụ mà những gì bạn thực sự muốn làm là nhìn vào trạng thái đối tượng bên trong các ứng dụng của bạn. Có một vài tùy chọn, mặc dù tôi không nghĩ rằng nó giúp bạn có khả năng thiết lập các điểm ngắt như Eclipse hoặc trình gỡ lỗi khác (mặc dù tôi sẽ được nghe thấy điều gì hạn chế bạn bắt đầu quá trình trong chế độ gỡ lỗi - kỹ thuật ? process?)

  1. bạn đã thử kết nối với: VisualVM chưa? Tôi không tin rằng bạn cần phải bắt đầu trong chế độ gỡ lỗi và nó sẽ cung cấp cho bạn khả năng điều hướng biểu đồ đối tượng và kiểm tra các đối tượng. Bạn thậm chí có thể sử dụng nó để lấy heapdumps và làm một số phân tích đặc biệt thông qua chúng bằng cách sử dụng OQL truy vấn.

  2. Nếu bạn đang chạy trên JDK6 + - bạn đã thử thiết bị với btrace chưa? Một số notes from the sailfin team có vẻ đầy hứa hẹn và giống như DTrace trong Solaris, điều này có vẻ như sẽ hữu ích trong nhiều tình huống khác nhau.

+0

Quá trình này đã chạy và tôi muốn xem liệu tôi có thể nhìn vào JVM bằng cách nào đó không. Nó đã không được bắt đầu trong chế độ gỡ lỗi, vì vậy tôi đã khám phá các tùy chọn cho việc này. Nói chung, mặc dù Eclipse debugger và Yourkit đủ mạnh để giải quyết các vấn đề miễn là bạn có quá trình thiết lập cho phù hợp. Tôi đã không thử btrace trước đây, nhưng tôi sẽ kiểm tra nó. – Thimmayya

+0

@thimmayya Những ghi chú đó có trả lời câu hỏi của bạn hay bạn vẫn đang tìm kiếm? – jayshao

+0

ghi chú hữu ích. Tôi chưa thử btrace, nhưng tài liệu nói rằng một chương trình BTrace có thể chạy trên một tiến trình Java đang chạy. Cảm ơn. – Thimmayya

0

Tôi không chắc liệu tôi có hiểu chính xác các hạn chế của bạn hay không nhưng bạn có thể khởi động JVM với máy chủ gỡ lỗi (đang phục vụ JDWP) được bật. Xem ví dụ "Tùy chọn yêu cầu dịch vụ mặt trời VM" trong http://java.sun.com/j2se/1.4.2/docs/guide/jpda/conninv.html

Sau đó, bạn có thể kết nối trình gỡ rối Eclipse của bạn để chạy JVM. Xem "gỡ lỗi từ xa" phần đây http://www.ibm.com/developerworks/library/os-ecbug/

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