Установите точку останова в управляемом коде, используя DebugDiag

Я пытаюсь использовать Debug Diagnostic Tool для создания Minidump каждый раз, когда вызывается определенный метод.

Я начал с простого консольного приложения:

namespace FastFailApp {
    class Program {
        static void Main(string[] args) {
            Console.WriteLine("Starting...");
            for (int i = 0; i < 20; i++) {
                Console.Write(".");
                Thread.Sleep(1000);
            }
            Environment.FailFast("Not so unexpected failure...");
        }
    }
}

Затем я создал правило в DebugDiag, чтобы создать мини-дамп на каждом Program.Main вызов: снимок экрана отладки К сожалению, это не сработало, в журнале DebugDiag я получил сообщение:

[12/9/2015 8:05:15 PM] Attempting to set managed breakpoint at FailFastApp.dll!FailFastApp.Program.Main
[12/9/2015 8:05:15 PM] bpID = -2
[12/9/2015 8:05:15 PM] Current Breakpoint List(BL)
SYMSRV:  https://msdl.microsoft.com/download/symbols/kernel32.pdb/996C94DB18DE43688CA110D2FF25B8542/kernel32.pdb not found
SYMSRV:  C:\Program Files\DebugDiag\sym\kernel32.pdb\996C94DB18DE43688CA110D2FF25B8542\kernel32.pdb not found
DBGHELP: C:\Windows\system32\kernel32.pdb - file not found
DBGHELP: kernel32.pdb - file not found
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Windows\system32\KERNEL32.dll - 
DBGHELP: KERNEL32 - export symbols
SYMSRV:  https://msdl.microsoft.com/download/symbols/ntdll.pdb/6048FDB62DCD41C18835594844CE71432/ntdll.pdb not found
SYMSRV:  C:\Program Files\DebugDiag\sym\ntdll.pdb\6048FDB62DCD41C18835594844CE71432\ntdll.pdb not found
DBGHELP: C:\Windows\SYSTEM32\ntdll.pdb - file not found
DBGHELP: ntdll.pdb - file not found
*** ERROR: Symbol file could not be found.  Defaulted to export symbols for C:\Windows\SYSTEM32\ntdll.dll - 
DBGHELP: ntdll - export symbols
[12/9/2015 8:05:15 PM] Thread exited. Exiting thread system id - System ID: 3568. Exit code - 0x00000000
CLR: Managed code called FailFast, saying "Not so unexpected failure..."

Я уже установил сервер символов в DebugDiag, и я проверил эту конфигурацию с WinDBG: введите описание изображения здесь

У кого-нибудь есть предложения?

PS. Приложение, которое я пытаюсь отладить, является 64-битным. Я попытался добавить текущий каталог процесса (с файлами pdb) к пути символа и использовал различные форматы для выражения точки останова (например, Module!Class::Method или же Module.dll!Class.Method(OtherType)без успеха.

1 ответ

Не должно ли это быть FailFastApp.exe!FailFastApp.Program.Main? Не уверен, что вы поместили код в библиотеку классов и скомпилировали его как DLL, но если вы этого не сделали, то это должен быть.exe

Если это не сработает, тогда посмотрите, сможете ли вы получить дамп на спящем методе, используя эту точку останова.

mscorlib.dll!System.Threading.Thread.Sleep

Надеюсь это поможет

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