Có cách nào để thêm thông tin bổ sung vào ngăn xếp java không?Thêm thông tin do người dùng chỉ định vào dấu vết ngăn xếp java
Tôi đang phát triển một thông dịch viên cho ngôn ngữ kịch bản và muốn xem các dòng mã script tương ứng trong ngăn xếp java.
Kết quả có thể giống như thế này:
java.lang.NullPointerException
at package.IPF_Try.execute(IPF_Try.java:76) called in script.scr:155
at package.IPF_Block.execute(IPF_Block.java:304)
at package.IPF_If.execute(IPF_If.java:105) called in script.scr:130
at package.IPF_Block.execute(IPF_Block.java:304)
at package.IPF_Main.execute(IPF_Main.java:147)
...
hay này:
java.lang.NullPointerException
at package.IPF_Try.execute(IPF_Try.java:76)
--- called in script.scr:155 ---
at package.IPF_Block.execute(IPF_Block.java:304)
at package.IPF_If.execute(IPF_If.java:105)
--- called in script.scr:130---
at package.IPF_Block.execute(IPF_Block.java:304)
at package.IPF_Main.execute(IPF_Main.java:147)
...
này sẽ làm cho gỡ lỗi dễ dàng hơn rất nhiều, không may google không thể tìm thấy bất cứ điều gì để đạt được điều này. Cách duy nhất tôi có thể nghĩ đến là tạo ra rất nhiều lớp với các phương thức, tên có chứa thông tin tôi cần và chỉ đơn giản gọi phương thức tiếp theo trong stacktrace - nhưng điều đó có vẻ như lãng phí (permgen). bộ nhớ và cpu chu kỳ với tôi.
Câu hỏi thú vị. Trình biên dịch java đặt trong các biểu tượng gỡ lỗi với tên tệp và số dòng vào mã byte. Tôi cho rằng nếu bạn làm hỏng bytecode, bạn có thể tinh chỉnh điều đó để phù hợp hơn với nhu cầu của bạn. Là trình biên dịch JSP làm một cái gì đó như thế? – Thilo
@Thilo - yes - JSP được biên dịch sang bytecode (đôi khi sử dụng một mẫu Java trung gian); bạn thường có thể tìm thấy các lớp được biên dịch bằng cách chọc vòng các thư mục "làm việc" của máy chủ. – McDowell
vấn đề là tôi không thể chỉ đơn giản là lộn xộn với bytecode của phương pháp của tôi, bởi vì chúng được gọi từ các kịch bản khác nhau, vì vậy tôi không thể thêm một phần thông tin cụ thể cho nó. Tuy nhiên, tôi có thể tự động tạo một số lớp chứa thông tin cần thiết trong tên phương thức hoặc tương tự, nhưng tôi lo ngại về các tác động hiệu suất. – ChristophK