Tôi đang gặp sự cố khi theo dõi lỗi và nó sẽ giúp bạn biết được phương pháp nào được gọi là phương pháp nhất định. Có một cách dễ dàng để có được một hệ thống phân cấp cuộc gọi từ java? Java là một phần nhỏ của ứng dụng vì vậy tôi không thể biên dịch và chạy toàn bộ ứng dụng trong nhật thực/hạt net vì vậy tôi không có quyền truy cập vào hệ thống phân cấp cuộc gọi của trình gỡ lỗi IDE.Nhận hệ thống phân cấp cuộc gọi trong java
Trả lời
Thread.currentThread().getStackTrace();
hoặc
Exception ex = new Exception();
ex.printStackTrace();
Đó là khá chậm, nhưng tốt cho mục đích gỡ lỗi. API docs here.
Bạn đã thử sử dụng khả năng gỡ lỗi từ xa của Java chưa? Google search to get you started if you haven't
Điều tốt nhất cần làm là ném ngoại lệ, ngay lập tức nắm bắt và phân tích dấu vết ngăn xếp.
Tôi tin rằng đó là cách Log4J có khả năng ghi nhật ký phương thức gọi.
với Thread.dumpStack() hoặc một số như vậy không cần phải ném một ngoại lệ nhân tạo. – djna
Bạn đúng rằng đây là cách mà log4j thực hiện. Tôi nghĩ rằng thisi chỉ vì lý do lịch sử, mặc dù Java 1.5 phương thức currentThread(). GetStackTrace() được Nelson đề xuất sẵn có nên cách tiếp cận này không còn cần thiết nữa. – mikej
Java là một phần nhỏ của ứng dụng, vì vậy tôi không thể biên dịch và chạy toàn bộ ứng dụng trong nhật thực/hạt net để tôi không có quyền truy cập vào hệ thống phân cấp cuộc gọi của trình gỡ lỗi IDE.
Bạn không cần chạy ứng dụng chút nào. Nếu bạn tạo một dự án trong Eclipse, bạn có thể sử dụng công cụ Phân cấp cuộc gọi dựng sẵn của nó để tìm tất cả các địa điểm có thể gọi một phương thức.
Có giao dịch tắt: Công cụ Phân cấp cuộc gọi sẽ cung cấp cho bạn TẤT CẢ các địa điểm từ nơi phương thức được gọi. Điều này là tốt nếu bạn muốn/cần phải biết tất cả các khả năng. Đề nghị của Neslson về Thread.currentThread().getStackTrace()
sẽ cung cấp cho bạn các địa điểm từ nơi mà một phương thức được gọi trong quá trình bạn lập trình cho lời gọi này. Sắc thái là bạn có thể không chạy qua mọi đường dẫn mã trong suốt quá trình gọi này. Nếu bạn thấy hành vi cụ thể và muốn biết cách bạn đến đó, hãy sử dụng tùy chọn getStackTrace()
.
- 1. Ẩn kiểm tra đơn vị từ Hệ thống phân cấp cuộc gọi
- 2. Chụp lớp gọi lên hệ thống phân cấp trong PHP
- 3. Công cụ tạo hệ thống phân cấp cuộc gọi của thư viện
- 4. Cuộc gọi hệ thống trên Windows
- 5. Phím tắt Intellij cho hệ thống phân cấp cuộc gọi nhanh
- 6. Bỏ qua cuộc gọi hệ thống
- 7. Hệ thống phân phối Java
- 8. Backbone.js và hệ thống phân cấp/cây
- 9. Thay thế UIViewController trong hệ thống phân cấp UINavigationController
- 10. Nhận nhiều gói dữ liệu trong một hệ thống gọi
- 11. Gọi hệ thống trong ARM
- 12. Java framework cho hệ thống phân phối
- 13. Cuộc gọi hệ thống mà không cần chuyển ngữ cảnh?
- 14. T-SQL nút get gốc trong hệ thống phân cấp
- 15. fork() - nhiều quy trình và cuộc gọi hệ thống
- 16. Có thể thêm cuộc gọi hệ thống qua LKM không?
- 17. Truy tìm cuộc gọi hệ thống chặn C
- 18. Cách theo dõi quy trình cho cuộc gọi hệ thống?
- 19. về ngã ba và thực hiện cuộc gọi hệ thống
- 20. Phân cấp cuộc gọi tốt trong Eclipse/PyDev
- 21. vs2010. Phân cấp cuộc gọi. Có cách nào để tạo phân cấp cuộc gọi cho tất cả các phương thức cùng một lúc không?
- 22. Xem tất cả các cuộc gọi hệ thống được thực hiện bởi một chương trình Java
- 23. CTE để duyệt qua sao lưu hệ thống phân cấp?
- 24. Chuyển hệ thống phân cấp vào mô-đun Verilog
- 25. hệ thống awk gọi
- 26. android - hệ thống phân cấp xem là gì?
- 27. hệ thống phân cấp chomsky bằng tiếng Anh đơn giản
- 28. Làm thế nào để nắm bắt được kết quả của một cuộc gọi hệ thống trong một biến hệ vỏ?
- 29. Cách thực hiện cuộc gọi hệ thống và đọc stdout, trong D?
- 30. Cuộc gọi hệ thống trong Linux được thực hiện như thế nào?
Có vẻ như bạn thực sự muốn theo dõi ngăn xếp chứ không phải phân cấp cuộc gọi. (Có thể chỉnh sửa Chủ đề của câu hỏi không?) –
Dấu vết ngăn xếp là phân cấp cuộc gọi trừ khi tôi thiếu một số khác biệt tinh tế. –
Một hệ thống gọi là heirarchy là một TREE của tất cả những nơi mà một thủ tục có thể được gọi từ. –