Когда вы отлаживаете дамп, вы можете найти неисправный поток с помощью команды "~" , а затем искать "." рядом с одним из потоков. Затем вы переходите на этот поток и запускаете kb . Вы должны увидеть вызов RaiseException () в собственном стеке вызовов.
Также вы можете запустить ! Clstack , чтобы получить управляемый стек вызовов, если вы знаете интересующий поток.
Вы также можете запустить ! Pe в потоке, чтобы вывести вывод (! PrintException).
Это должно помочь вам в большей части… не стесняйтесь комментировать и делиться большим количеством данных, основываясь на описанных мною шагах, и мы сможем решить эту проблему быстро
Чтобы ответить на ваш вопрос, кажется, что в течение некоторого времени, когда исключение находится в потоке, вывод! Threads будет указывать это. Таким образом, похоже, у вас есть много исключений, чтобы выследить.
Еще одна техника (которая заслуживает еще одного TAG: -)
Чтобы отследить другие исключения, вы можете использовать Visual Studion и разрешить взлом исключаемого исключения в пользовательском интерфейсе. Если вы дерзаете, вы можете запустить Mdbg и выполнить следующие команды, чтобы поймать выбрасываемые исключения
Open a VS.NET 2005/2008 Command Prompt
mdbg
>pro //Lists the processes
>a <PID> //attach to the processes
>ca ex //catches all exceptions
>g //go until break
//When it breaks on an exception
>where -v -c 200 // dumps the managed call stack (verbose) with a count of 200 frames
>print //prints out locals on the stack
>g //go to next exception
>de //Detach when done.. process stays running
>q //Quit the debugger
Приятной особенностью MDbg является то, что вы можете выполнять отладку на уровне исходного кода. (возможно, я создам для них тег MDbg )
Спасибо,
Аарон