Сторожевой таймер должен знать, какой поток не ответил вовремя, поскольку он проверяет. Вы упоминаете, что есть событие для каждого потока ... возможно, в стеке сторожевого потока все еще есть некоторая информация, которая может помочь вам определить, какой поток не отвечает?
Если нет, просто сбросьте все следы стека с помощью команды ~ * kc и посмотрите, сможете ли вы найти что-нибудь подозрительное.
Имейте в виду, что дамп является снимком состояния приложения. Это означает, что с вероятностью ни один из потоков не должен быть в функциях, которые выполняются не часто или недолговечны.
Одна хитрость (для относительно детерминированных приложений) - получить несколько дампов приложения, работающего в не зависшем состоянии. Тогда вы будете знать, как должны выглядеть трассировки стека. Когда вы изучаете дамп зависшего процесса, стеки некоторых потоков должны выскочить на вас.