Как вы отлаживаете сбой приложения без трассировки стека, ссылающейся на исходный код? - PullRequest
2 голосов
/ 08 января 2009

http://support.microsoft.com/kb/953102

Во время рождественских каникул мы потратили около 50 часов, чтобы выявить эту проблему, которая привела к случайному сбою нашего критически важного производственного приложения.

Проблема заключалась в том, что в исходном коде не было трассировки стека, только собственный код, такой как NativeWindow.Callback, в нижней части трассировки стека.

Какие-нибудь инструменты, которые вы бы использовали для устранения подобных проблем?

1 Ответ

4 голосов
/ 08 января 2009

Если вы можете терпеть, добавьте много журналов.

Догадайтесь, где это происходит, и заключите в скобки этот код в журналах entered Foo и exited Foo. Затем, если вы видите одно, но не другое в случае сбоя, вы знаете, что оно где-то там, поэтому начинайте бинарный (или n-арный) поиск, погружаясь в функции по мере необходимости. В какой-то степени вам нужно будет свернуть ковер позади себя, чтобы уменьшить размер бревна, но до тех пор, пока сбой может происходить достаточно часто, вы должны быть в состоянии сосредоточиться на нем таким образом.

У меня есть приложение, с которым я это сделал (я не могу отладить его каким-либо другим способом в предполагаемой среде), и оно оказалось эффективным, также впечатляет тот факт, что вы работали с 1M + line log файлы (для большого количества журналов и большого тестового примера <g>)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...