Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Если приложение не вызывает функцию SymInitialize с параметром fInvadeProcess, установленным в значение TRUE, оно должно загружать символы для модуля, когда это необходимо. Чтобы загрузить модуль символов по запросу, приложение может вызвать функцию SymLoadModuleEx с полным путем к имени модуля. При загрузке модуля обработчик символов будет загружать символы немедленно или отложить нагрузку в зависимости от параметров, заданных с помощью функции SymSetOptions.
Следующий код загружает модуль символов. Обратите внимание, что предполагается, что вы инициализировали обработчик символов с помощью кода в разделе Инициализация обработчика символов.
TCHAR szImageName[MAX_PATH] = TEXT("foo.dll");
DWORD64 dwBaseAddr = 0;
if (SymLoadModuleEx(hProcess, // target process
NULL, // handle to image - not used
szImageName, // name of image file
NULL, // name of module - not required
dwBaseAddr, // base address - not required
0, // size of image - not required
NULL, // MODLOAD_DATA used for special cases
0)) // flags - not required
{
// SymLoadModuleEx returned success
}
else
{
// SymLoadModuleEx failed
DWORD error = GetLastError();
printf("SymLoadModuleEx returned error : %d\n", error);
}
Обратите внимание, что szImageName может быть путем к любому исполняемому модулю, который содержит сведения об отладке (.exe, .dll, .drv, .sys, SCR, .cpl, .com). Кроме того, dwBaseAddr является базовым адресом модуля символов, который необходимо загрузить. Если это значение равно 0, обработчик символов получит базовый адрес из указанного модуля символов.
Связанные разделы