1 (изменено: greg zakharov, 2021-08-23 21:35:45)

Тема: CMD/BAT: данные мониторинга утечки куч

В Windows 10 есть встроенный механизм фиксирующий утечки куч. Получить статистику в удобочитаемом виде можно следующим образом:

@echo off
  setlocal enabledelayedexpansion
    call:getOSVersion
    if !ver! neq 10 echo:Win10 are strongly required.&&goto:eof

    set "key=HKLM\SOFTWARE\Microsoft\RADAR\HeapLeakDetection"
    set "key=%key%\DiagnosedApplications"
    echo:Application name                       Time
    echo:-----------------                      -----
    for /f "tokens=3,7 delims=\ " %%i in (
      '2^>nul reg query %key% /s /v LastDetectionTime'
    ) do (
      if /i "%%~j" neq "" call:printf 37 %%j
      if /i "%%~i" neq "microsoft" call:convertFiletimeToLocaltime %%~i
    )
  endlocal
exit /b

:getOSVersion
  for /f "tokens=4 delims=. " %%i in ('ver') do set "ver=%%i"
exit /b

:printf
  set "i=%~1" % rem : счётчик пробелов
  set "s=%~2" % rem : входящая строка
  :while
    set "s=!s:~1!"
    if defined s set /a "i-=1"&goto:while
  set "s=%~2" % rem : добавили пробелов
  for /l %%i in (1,1,!i!) do set "s=!s! "
  <nul set /p "=!s!"
exit /b

:convertFiletimeToLocaltime
  for /f "tokens=2 delims=-" %%i in ('w32tm /ntte %~1') do echo:%%i
exit /b