2012-11-13 24 views
7

Tôi cần phải nhìn vào ngăn xếp của 2 chuỗi bị bế tắc để phân tích tình huống. JVM hiện đang hoạt động và dữ liệu đã có, nhưng tôi cần một số loại công cụ để trích xuất nó từ quy trình. Tôi chỉ quan tâm đến 6 biến trong ngăn xếp loại String. Bất kỳ ý tưởng được đánh giá rất cao. JVM phiên bản 6_35, đây là số linux, JMX được bật nhưng tôi không có kết nối profiler/debugger được định cấu hình trên đó. Rất khó để tái sản xuất.Tôi có thể bỏ các biến ngăn xếp luồng hiện tại khỏi một JVM trực tiếp không?

+3

Xin chào cử tri xuống? – ShiDoiSi

Trả lời

3

Bạn không thể thực hiện việc này dễ dàng. Công cụ bình thường jstack sẽ chỉ đổ đống. Về mặt kỹ thuật, bạn có thể thử đổ toàn bộ đống (sử dụng jmap) nhưng tìm kiếm các biến cụ thể này có thể là một nỗi đau nếu có thể.

Lưu ý rằng điều này không dễ dàng thực hiện được vì lý do bảo mật. Dấu vết ngăn xếp có thể chứa thông tin xác thực hoặc dữ liệu nhạy cảm khác.

+2

Tôi nghi ngờ nó là vì lý do an ninh, "không dễ dàng làm được" không bao giờ là một cách tiếp cận tốt, nơi hack là có liên quan. Chỉ cần 2 xu của tôi. –

0

Bạn có thể gửi quy trình SIGQUIT để cung cấp cho bạn dump and keep the VM running, trên hệ điều hành giống Unix với Sun/Oracle JVM, như sẽ IBM's JVM - không chắc liệu đầu ra có phù hợp với mục đích của bạn hay không. Có thể tương tự như jstack/jmap trong câu trả lời khác.

+0

Điều này chỉ cung cấp một kết xuất chuỗi (chuỗi các phương thức được gọi cho mỗi luồng) chứ không phải trạng thái của các biến trong mỗi luồng. –

1

Tôi đã tìm thấy một mẹo nhỏ bằng cách sử dụng trình xem kết xuất đống (YourKit trong trường hợp này, nhưng có thể là những người khác cũng hoạt động). Về cơ bản bạn liệt kê tất cả các cá thể của lớp Thread, sau đó bạn tìm thấy chuỗi bạn muốn theo tên và mở nó. Các biến ngăn xếp được đánh dấu là < biến cục bộ> như thế này:

enter image description here

Không phải tất cả các biến đang ở đây, nhưng tất cả những gì được thông qua như các đối số cho phương thức được hiển thị. Tôi tự hỏi, nếu profilers có thể giải quyết vấn đề này tốt hơn?

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