Получение дополнительной информации о функции вызова с помощью debugdiag

Я использую debugdiag 1.2 с файлом.dmp. Я работаю со службой поддержки Microsoft, и мы получаем различные подробности трассировки функций - его версия намного более многословна с именами функций и параметрами.

Я задавался вопросом, было ли что-то, по чему я скучаю, чтобы получить то же самое, что и он?

Например, я получу:

ntdll!NtWaitForMultipleObjects+a    
KERNELBASE!WaitForMultipleObjectsEx+e5    
clr!WaitForMultipleObjectsEx_SO_TOLERANT+62    
clr!Thread::DoAppropriateAptStateWait+53    
clr!Thread::DoAppropriateWaitWorker+186    
clr!Thread::DoAppropriateWait+7d    
clr!WaitHandleNative::CorWaitOneNative+151    
mscorlib_ni+509aa4    
0x000007fd`231e0e5c    
mscorlib_ni+4efd85    
mscorlib_ni+4efae9    
mscorlib_ni+4efaa7    
mscorlib_ni+d529ad 

За тот же файл дампа он получит:

ntdll!ZwWaitForMultipleObjects+a 
KERNELBASE!WaitForMultipleObjectsEx+e5 
clr!WaitForMultipleObjectsEx_SO_TOLERANT+62 
clr!Thread::DoAppropriateAptStateWait+53 
clr!Thread::DoAppropriateWaitWorker+186 
clr!Thread::DoAppropriateWait+7d 
clr!WaitHandleNative::CorWaitOneNative+151 
mscorlib_ni!System.Threading.WaitHandle.InternalWaitOne(System.Runtime.InteropServices.SafeHandle, Int64, Boolean, Boolean)+14 
FiftyOne_Foundation!Unknown+3c 
mscorlib_ni!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+285 
mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)+9 
mscorlib_ni!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)+57 
mscorlib_ni!System.Threading.ThreadHelper.ThreadStart(System.Object)+5d 

DebugDiag выглядит как чрезвычайно полезный инструмент - я бы очень хотел хорошо его понять. Спасибо заранее за ваше время.

1 ответ

Разница в том, что служба поддержки Майкрософт использует внутренние ЧАСТНЫЕ СИМВОЛЫ, и когда вы используете инструмент диагностики отладки с символами ЧАСТНЫХ, стеки NATIVE, отображаемые в отчете, намного точнее и лучше, потому что отладчик (в частности, dbgeng.dll и dbghelp.dll) в состоянии вычислить даже имена управляемых функций, и они показывают их в собственном стеке, как будто они являются собственными функциями, однако, если мы будем использовать символы PUBLIC (из msdl.microsoft.com) для анализа дампов, эти имена функций не будут отображаться в отчете об отладочной диаграмме под собственным разделом стека.

Вы по-прежнему должны видеть правильные имена функций в стеке MANAGED потока в отчете.

Я также вижу, что CLR, загруженный в дамп, равен 4.0 или выше, так что вы получите лучшие стеки в отчете, если будете использовать Debug Diagnostic 2.0, как это было написано специально для целевых сред 4.0 и выше. Вы можете скачать его с http://www.microsoft.com/en-us/download/details.aspx?id=40336

Другие вопросы по тегам