суббота, 15 ноября 2008 г.

UserDump

Еще одна полезная утилита, которую я использую при "разборе полетов" - UserDump.
Она позволяет сделать "снимок" подвисшего (или ведущего себя странно) процесса в DMP-файл, который можно уже дальше спокойно разбирать с помощью отладчика в "кулуарной" обстановке.

Пользоваться ей достаточно просто:

userdump.exe -p
    Displays a list of running processes and process IDs.

userdump.exe [-k] [-w] []
    Dumps one process or processes that share an image binary file name.

    -k optionally causes processes to be killed after being dumped.

    -w optionally includes window information into the dump.

     is a decimal or 0x-prefixed hex process ID, or the
        base name and extension (no path) of the image file used to create
        a process.

     is a legal Win32 file specification. If not specified,
        dump files are generated in the current directory using a name
        based on the image file name.

userdump.exe -m [-k] [-w] [...] [-d ]
    Same as above, except dumps multiple processes.

    -d supplies the directory where the dumps will go.
        The default is the current directory.

userdump.exe -g [-k] [-w] [-d ]
    Similar to above, except dumps Win32 GUI apps that appear hang.

userdump.exe -I [-d ]
    To change just in time debugger to UserDump.
    This command will not actually start UserDump.
    If you don't setup userdump, please copy userdump.exe and dbghelp.dll to %windir%\system32\kktools folder.

    -d supplies the directory where the dumps will go.
        The default is a current directory of the target process.

На самом деле, это не одна утилита а целый пакет (под все платформы), который позволяет, например, настроить снятие дампа на комбинацию "горячих" клавиш, генерировать дампы заданных процессов, руководствуясь набором записанных разработчиком правил, инициировать OS bugcheck, отображать список процессов, встраиваться в TerminateProcess - возможностей много, но реально я использовал только снятие дампов заданных процессов с командной строки или по "горячей" клавише.

Собственно, подобную функциональность легко сделать и script'ом ntsd, но я ленив :-)

Комментариев нет: