Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
Om ett program inte anropar funktionen SymInitialize med parametern fInvadeProcess inställd på TRUEmåste den läsa in symboler för en modul när de krävs. Om du vill läsa in en symbolmodul på begäran kan programmet anropa funktionen SymLoadModuleEx med en fullständig sökväg till ett modulnamn. När modulen läses in läser symbolhanteraren antingen in symbolerna omedelbart eller skjuter upp belastningen, beroende på vilka alternativ som anges med hjälp av funktionen SymSetOptions.
Följande kod läser in en symbolmodul. Observera att det förutsätter att du har initierat symbolhanteraren med hjälp av koden i Initiera symbolhanteraren.
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);
}
Observera att szImageName kan vara en sökväg till alla körbara moduler som har felsökningsinformation (.exe, .dll, .drv, .sys, .scr, .cpl, .com). Dessutom är dwBaseAddr basadressen för symbolmodulen som ska läsas in. Om det här värdet är 0 hämtar symbolhanteraren basadressen från den angivna symbolmodulen.
Relaterade ämnen