Java threaddump sous windows
Rédigé par gorki Aucun commentaireProblème :
Faire des threadumps un peu assisté pour Java sous Windows. Normalement, il faut :
- repérer le pid
- appeler jstack sur le pid
- stocker le résultat dans un fichier unique
Mais j'avais besoin d'un script oneshot que les utilisateurs puissent lancer facilement et plusieurs fois
Solution :
Merci aux différentes ressources du net, voici un petit script rapide :
@echo off
SET JAVA_HOME=c:\Program Files\Java\jdk1.7.0_51\
SET OUTPUT_DIR=c:\temp\lzg_threaddumps
SET COMMAND_TO_CHECK=java.exe
setlocal enableextensions
if not exist "%OUTPUT_DIR%" md "%OUTPUT_DIR%"
endlocal
for /f "tokens=2" %%F in ('tasklist /nh /fi "imagename eq %COMMAND_TO_CHECK%"') do (
SET DEST_FILE="%OUTPUT_DIR%\%%F_%date:~-4,4%%date:~-7,2%%date:~-10,2%_%time:~-11,2%%time:~-8,2%%time:~-5,2%%time:~-2,2%.txt"
@echo Dumping %%F to file %DEST_FILE%
rem echo "%JAVA_HOME%\bin\jstack.exe" %%F
"%JAVA_HOME%\bin\jstack.exe" %%F > %DEST_FILE%
)