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