Найдите конкретный стек вызовов c внутри минидампа - PullRequest
0 голосов
/ 16 июня 2020
• 1000 1015 *. Механизм выглядит так:
try {
    // code
}
catch(...) {
    auto file = CreateFileA("dump.dmp", GENERIC_READ | GENERIC_WRITE, 0, 0, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
    MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), file, MiniDumpNormal, 0, 0, 0);
    CloseHandle(file);
}

Когда я загружаю файл дампа в VS, я не могу получить доступ к потоку (-ам) модуля SPECIFI C, имя которого я знаю. Во время анализа дампа модуль открывает свой проект. Я убедился, что версии совпадают, и в текущем контексте он также построен как Debug. Я могу видеть все потоки с их стеками вызовов, но отображаются только их идентификаторы

Даже в этом случае я проверил каждый стек вызовов из каждого потока и не смог найти ни одного из своего модуля. В окне модулей я проверил, что модуль, который я ищу, указан и символы загружены. В показанном ранее коде я использовал MiniDumpNormal, но я также пробовал такие вещи, как MiniDumpWithFullMemory (думаю, с этим я также могу предварительно просмотреть глобальные переменные / locals / et c)

В случае нет способа различать потоки, я полагаю, я вынужден использовать фильтр минидампа. И снова я не знаю, что делать. Я мог бы использовать полноценный фильтр, но я думаю, что есть более простой способ просто выгрузить определенные c потоков. Если я не могу указать модуль, из которого будут выгружаться потоки, по крайней мере, я смогу передать дескрипторы целевым потокам. точечные руководства, связанные с минидампами и их использованием в качестве разработчика

Спасибо, что изучили мою проблему

...