2016-02-06 9 views
3

Я борюсь за получение информации о ручках через Minidump (DbgHelp.h).Получение данных с помощью MiniDump (DbgHelp.h)

Я получаю список MINIDUMP_HANDLE_DESCRIPTOR_2 из отображенного потока файлов .. Тогда я получаю за каждый дескриптор MINIDUMP_HANDLE_OBJECT_INFORMATION, используя ObjectInfoRva поля.

Однако я не могу понять, какая информация эта структура MINIDUMP_HANDLE_OBJECT_INFORMATION дает мне, я не нашел примеров в Интернете для извлечения значимой информации из MINIDUMP_HANDLE_OBJECT_INFORMATION, и документация не очень полезна.

Как я могу использовать структурные данные MINIDUMP_HANDLE_OBJECT_INFORMATION, чтобы получить человекообразные данные? Я имею в виду, что мне нужно сделать с этим? Я всегда получаю 0 на InfoType подал, что означает - MiniHandleObjectInformationNone.

MINIDUMP_HANDLE_OBJECT_INFORMATION структура:

public struct MINIDUMP_HANDLE_OBJECT_INFORMATION 
{ 
    public uint NextInfoRva; 
    public MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE InfoType; 
    public UInt32 SizeOfInfo; 
} 

Я сделал некоторые эксперимент с MINIDUMP_HANDLE_OBJECT_INFORMATION структуры

Когда я получаю-структуру, я способен считывать строку с адреса RVA с SizeOfInfo размера , Вот я утоляет получать «Каталог» в виде цепочки на всех ручках дескрипторов, которые я получил ...

ссылка на документ:

https://msdn.microsoft.com/en-us/library/windows/desktop/ms680375(v=vs.85).aspx

Любая помощь будет оценена :)

Мой процесс, на который я пытаюсь применить его, использует вызовы WaitForMultipleObjects и WaitForSingleObjectKernel32.

Ссылка на мою реализацию:

https://github.com/Pavel-Durov/Multithreading-Debugging-Asignments/blob/master/Assignments/Assignments.Core/Handlers/MiniDumpHandler.cs

Ссылка на WinDbg выхода !handle команды, которые я выполнить на тот же файл дампа: https://docs.google.com/document/d/1Hjid-2dcM0aZrg5A1p5VrCBSysU_VQhynXdBAvXV29Q/edit?usp=sharing

Может быть, проблема в том, что я не установить допустимые значения для моего перечисления MINIDUMP_HANDLE_OBJECT_INFORMATION_TYPE, кто-нибудь знаком с надежным источником с этим объявлением значений enum? Я не нашел ничего официального.

Просто, чтобы прояснить ситуацию.

В WinDbj, я получаю ту же информацию, как я получаю от MINIDUMP_HANDLE_DESCRIPTOR_2, Например, если WinDbg команда обрабатывать имеет следующий вывод:

Handle 00000004 
    Type     Directory 
Handle 00000008 
    Type     Directory 
Handle 0000000c 
    Type     Event 
Handle 00000010 
    Type     Event 
Handle 00000014 
    Type     File 
… 

Я getthe же данные из MINIDUMP_HANDLE_DESCRIPTOR_2 ObjectName и TypeName которые имеют тип MINIDUMP_STRING.

Информация, которую я не может get - это тот, который находится в структуре MINIDUMP_HANDLE_OBJECT_INFORMATION. Что не видно на командном выходе !hanlde.

Какую информацию предполагается разместить в MINIDUMP_HANDLE_OBJECT_INFORMATION?

+2

Наиболее вероятной причиной является документированный, у вас просто нет интересных манипуляций в этом процессе. Вы получаете дополнительную информацию только для ручек потоков, процессов и мьютексов. Остальные «нет дополнительной информации», 0. –

+0

Я собираю эту информацию о процессе, который ждет нескольких мьютексов, предположим, что это какая-то информация, потому что, если я рассматриваю процесс с ClrMd, я получаю имена мьютексов. .. –

+1

Управляемый объект Mutex не имеет ничего общего с неуправляемым. Эта таблица предназначена для использования отладчика, для сравнения используется команда управления Windbg !. –

ответ

0

После нескольких нерабочих часов - отладка моего управляемого кода и сравнение его с примерами кода на C++ - я нашел свою ошибку с MINIDUMP_HANDLE_OBJECT_INFORMATION struct reading - я не рассчитал адрес rva + baseMinidump соответствующим образом.

Сейчас он работает, я в состоянии получения дополнительной информации ручки :)

Mu код можно найти здесь: https://github.com/Pavel-Durov/Multithreading-Debugging-Asignments/blob/master/Assignments/Assignments.Core/Handlers/MiniDumpHandler.cs

линия 144, функция DealWithHandleInfo

 Смежные вопросы

  • Нет связанных вопросов^_^