У меня есть файл дампа, который мне удалось создать из моей DLL, созданной для любого необработанного исключения.
Когда я делал что-то вроде int* tt = new int[4]; return int[n];
с n = 4, я получал файл дампа, мог открыть его и посмотреть, в какой строке возникает ошибка. Это было возможно как непосредственно из релизного exe, так и из релизной DLL.
Это была простая ошибка, и я ввел ее только для проверки создания дампа памяти.
Теперь у меня есть файл дампа размером 900 КБ, и в журнале событий говорится, что ошибка исходит из моей .DLL, но если я открою файл, он не отобразит исходный код.
Стек вызовов
KERNELBASE.dll!RaiseException() + 0x3d байт
clr.dll!RaiseTheExceptionInternalOnly() + 0x18f байт
clr.dll!IL_Throw() + 0xe2 байт
000007fe81f65fd7()
00000000034d1610()
000000002d06ecb8()
436f93ce00050011()
436f93cf00110012()
000000002d06ec50()
00006d930c4f7680()
clr.dll!InlinedCallFrame:()0ftable0()0
что совсем не помогает мне понять, откуда в DLL моя ошибка. Еще одна проблема с отладкой заключается в том, что это происходит только на живом ПК, но не в моей системе отладки. Может ли кто-нибудь помочь мне найти способ отладки этого? Кажется, это происходит при вызове DLL, но: не каждый раз, только как каждый второй раз (иногда с 1-й попытки, иногда с 5-й). Я совершенно потерялся в том, что здесь происходит.
Изменить: обновлен стек вызовов с загруженными символами Microsoft, но я до сих пор не знаю, откуда это может происходить.