Để tải một chuỗi chỉ với một JRE, bạn cần tools.jar và attach.dll từ JDK của cùng một phiên bản Java. Cài đặt nơi này và sao chép chúng vào jre. Phải là phiên bản giống hệt nhau!
Nếu bạn cần một kết xuất của một tiến trình đang chạy trong tài khoản hệ thống, bạn có thể sử dụng Windows sysinternals psexec.exe để truy cập vào quy trình. Sao chép dữ liệu này vào thùng JRE hoặc một nơi nào đó trong đường dẫn.
Tệp lô này ghi kết xuất ngăn xếp vào một tệp có tên tệp ngày giờ để có thể thực hiện và so sánh nhiều dấu vết dễ dàng.
Threads.bat
:: Creates a thread dump for the tomcat6.exe process
:: saved in a timestamped filename and views it!
:: Jim Birch 20111128 rev 2015-10-12
::Required the following files to be placed in the jre/bin folder:
:: attach.dll - From the Java JDK (must be the same version)
:: tools.jar - ditto
:: psexec.exe - from Windows sysinternals
::cd to jre/bin
d:
cd \application\jre\bin
::build datetime filename
rem datetime from wmi.exe
for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set dt0=%%I
rem datetime string as YYYY-MM-DD-hhmmss
set dt=%dt0:~0,4%-%dt0:~4,2%-%dt0:~6,2%-%dt0:~8,6%
set ff=td-%dt%.txt
echo filename: %ff%
::PID of the process by named exe, eg, tomcat6
for /F "tokens=2" %%I in ('TASKLIST /NH /FI "IMAGENAME eq tomcat6.exe"') DO SET PID=%%I
echo pid: %PID%
::combine above with jstack command
psexec -s jstack.exe -l %PID% >> %ff%
:: view result
start %ff%
::insert pause to debug or timer to review script operation
::ping localhost -n 20 >nul
::pause
Nguồn
2015-10-12 02:30:32
Chỉ cần để tham khảo, "giết -3 pid" sẽ gây ra một Unix/Linux jre để đổ toàn bộ thread stack trace tới stdout. Rất, rất, rất tiện dụng. –