Winedbg
Материал из Русский WINE
$ winedbg Wine-dbg>info proc pid threads executable (all id:s are in hex) 00000010 8 'services.exe' 0000002e 3 \_ 'plugplay.exe' 00000020 3 \_ 'winedevice.exe' 00000014 3 \_ 'winedevice.exe' 0000001e 6 \_ 'winedevice.exe'
Подсоединиться к нужному процессу/потоку, указав его PID в шестнадцатиричном виде с префиксом 0x:
Wine-dbg>attach 0x20 0xb760cccf __libc_read+0x3f in libpthread.so.0: int $0x80
Посмотреть backtrace:
Wine-dbg>bt Backtrace: =>0 0xb760cccf __libc_read+0x3f() in libpthread.so.0 (0x8122f678) 1 0x8ff6440f in ntdll (+0x6440e) (0x8122f678) 2 0x8ff666f3 in ntdll (+0x666f2) (0x8122f8a8) ...
Отключиться от процесса:
Wine-dbg>detach
Или продолжить выполнение:
Wine-dbg>c
Выйти из отладчика:
q
Если не ясно, какой именно поток зависший, можно просмотреть все.
Также нужно подключиться через $ strace -p PID к зависшему потоку (который берёт 100% процессора) и записать, что выводится там.