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?
Trả lời
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.
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. –
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.
Đ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. –
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:
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?
- 1. gỡ lỗi trực tiếp ngăn xếp ngăn xếp
- 2. Nhận đối số biến trực tiếp từ ngăn xếp
- 3. Mỗi luồng có ngăn xếp riêng không?
- 4. Lấy các biến cục bộ từ một khung ngăn xếp trên JVM
- 5. Loại tham chiếu trực tiếp trên heap, loại giá trị trực tiếp trên ngăn xếp
- 6. Làm thế nào tôi có thể đo chiều sâu ngăn xếp luồng?
- 7. các chủ đề lôgic hiện tại tăng/ngăn xếp luồng bị rò rỉ
- 8. Biến chỉ có ngăn xếp có thể có trong C++ không?
- 9. Có thể phát trực tiếp các luồng mm, ASX, RTSP trên iPhone không?
- 10. jQuery + Sắp xếp + trực tiếp
- 11. Điều hướng đến một trang mới mà không đặt trang hiện tại trên ngăn xếp lại?
- 12. Vùng chứa heap Java có bao gồm ngăn xếp luồng
- 13. Tại sao tôi không thể cắt xén trực tiếp một xts?
- 14. Các biến chia sẻ và ngăn xếp sai
- 15. Không thể gọi trực tiếp supertype constructor - tại sao không?
- 16. Khi đóng Scala, khi nào các biến bắt được bắt đầu tồn tại trên vùng JVM?
- 17. Trả về biến ngăn xếp?
- 18. Ngăn chặn một lớp từ instantiation trực tiếp trong Python
- 19. Wheres dấu vết ngăn xếp của tôi đã biến mất?
- 20. Sự khác biệt giữa ngăn xếp của một luồng và ngăn xếp của quá trình
- 21. Làm thế nào tôi có thể bản địa hóa các biến Perl trong một khung ngăn xếp khác nhau?
- 22. Tại sao cấu trúc không thể được gán trực tiếp?
- 23. Tại sao tôi không thể truy cập mảng bằng chỉ mục trực tiếp?
- 24. in ngăn xếp hiện tại trong nhật ký
- 25. C#: làm cách nào để ẩn một phương thức khỏi ngăn xếp ngăn xếp?
- 26. Tôi có thể chặn một hàm được gọi trực tiếp không?
- 27. Tại sao tôi không thể khởi động bảng điều khiển Heroku trên ngăn xếp Cedar?
- 28. Làm thế nào tôi có thể ssh trực tiếp đến một thư mục cụ thể?
- 29. Làm cách nào tôi có thể truy vấn trực tiếp các hậu duệ?
- 30. C++ ngăn xếp biến và các biến đống
Xin chào cử tri xuống? – ShiDoiSi