У меня есть служба Windows, которая периодически выдает исключение, которое иногда убивает его SQLConnection, а в других случаях полностью убивает службу. Он работает в прямом эфире на сайте клиента.
Я планировал использовать Windbg + SOS для получения аварийного дампа, чтобы я мог отлаживать его на досуге.
Однако при моей первой попытке отладчик остановил службу, когда обнаружил первое случайное исключение, которое было перехвачено и обработано в коде (как я использовал команду sxe clr
).
В файле справки предлагается использовать sxd clr
вместо sxe clr
для захвата исключений второго изменения вместо исключений первого шанса.
Однако в моем тестировании сгенерированное, перехваченное и обработанное исключение обрабатывается точно так же, как и выброшенное исключение (но не перехвачено) командой sxd clr
, а именно это замечается и игнорируется.
Является ли это поведение не остановкой на выброшенном исключении, возможно, когда я явно сгенерировал исключение в своем коде, или все исключения clr не смогут остановить отладчик с помощью команды sxd
? Должен ли я использовать другую команду?
Во-вторых, поскольку Windbg специально не распознает ошибки clr, можно ли заставить его останавливаться только на конкретном необработанном исключении (т. Е. InvalidOperationException)