2013-07-16 40 views
10

Tôi hiện đang phát triển một Java Agent để tạo điều kiện cho thiết bị động của các Ứng dụng Java mới và kế thừa. Nó xảy ra với tôi rằng, như xa như IDE gỡ lỗi là có liên quan, Java Đại lý có thể được coi là một trường hợp đặc biệt khi họ được yêu cầu phải được tiêm vào một quá trình JVM mục tiêu để được chạy. Do đó, tự nhiên đưa ra câu hỏi về cách người ta sẽ đi về gỡ lỗi, thử nghiệm và lược tả một ứng dụng loại Agent.Gỡ lỗi Đại lý Java

Tìm kiếm cursory cho các giải pháp hiện có đã bật lên một vài tùy chọn dựa trên dòng lệnh (ví dụ YourKit, JIP, v.v.) tuy nhiên, nhiều tùy chọn trong số đó là ALSO Java Agent. Mà nếu sử dụng sẽ dẫn đến, ít nhất là trong quan điểm của tôi, kịch bản khá kỳ quặc của một đại lý gỡ lỗi/hồ sơ một đại lý. Tôi biết rằng Đại lý có thể được xếp chồng lên nhau trong một sắp xếp phân cấp, tuy nhiên tôi không chắc chắn nếu ứng dụng đại lý có thể được gỡ lỗi bằng cách xếp chồng Đại lý trong trang viên này.

Trả lời

8

Như đã nêu trong Java How To ... The -javaagent: Option:

Một đại lý được chỉ là một đánh chặn ở phía trước của phương pháp chính của bạn, thực hiện trong cùng một JVM và tải bởi classloader cùng một hệ thống, và chi phối bởi các chính sách bảo mật tương tự và ngữ cảnh.

Tên gây hiểu lầm, vì tác nhân từ thường gợi ý điều gì đó hoạt động từ xa và riêng biệt với thực thể chính. Nhưng nó hóa ra tác nhân java như được sử dụng trong -javaagent: đơn giản hơn nhiều hơn thế.

Một ứng dụng java có thể có bất kỳ số lượng tác nhân nào bằng cách sử dụng -javaagent: tùy chọn bất kỳ số lần nào. Đại lý được gọi theo thứ tự như được chỉ định trong các tùy chọn.

Mỗi tác nhân cũng có thể lấy các giá trị chuỗi có giá trị chuỗi. Tôi đoán đó là lý do lý do tại sao chúng tôi phải sử dụng tùy chọn này nhiều lần cho nhiều tác nhân. Nếu không, chúng tôi có thể đã thực hiện một cái gì đó như:

-javaagent agent1.jar:agent2.jar 

, không chính xác.

Vì vậy, bằng cách đặt tác nhân hồ sơ (ví dụ YourKit, JIP, v.v.) trước khi đại lý của riêng bạn sẽ cấp quyền kiểm soát gỡ lỗi cho bạn.

+1

Bạn đã sao chép hầu hết bài đăng của mình mà không có phân bổ, từ [Java Cách thực hiện ... The -javaagent: Option] (http://javahowto.blogspot.nl/2006/07/javaagent-option.html). – Virtlink

+0

Tôi đã cung cấp tài liệu tham khảo trong văn bản (từ đầu), vì vậy tôi không nhận được quan điểm của bạn. Gợi ý của bạn là gì? –

+0

@MohammadDashti - Việc chỉ cần ném liên kết vào bài đăng của bạn là không thể chấp nhận được. Bạn * phải * đặt bất kỳ từ ngữ được sao chép nào trong các blockquotes và xác định rõ nơi nó được sao chép từ đó. Tôi đã làm điều này ở trên. –