MCPcopy Create free account
hub / github.com/JochenKalmbach/StackWalker / ShowObject

Method ShowObject

Main/StackWalker/StackWalker.cpp:1287–1322  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1285}
1286
1287BOOL StackWalker::ShowObject(LPVOID pObject)
1288{
1289 // Load modules if not done yet
1290 if (m_modulesLoaded == FALSE)
1291 this->LoadModules(); // ignore the result...
1292
1293 // Verify that the DebugHelp.dll was actually found
1294 if (this->m_sw->m_hDbhHelp == NULL)
1295 {
1296 SetLastError(ERROR_DLL_INIT_FAILED);
1297 return FALSE;
1298 }
1299
1300 // SymGetSymFromAddr64() is required
1301 if (this->m_sw->pSGSFA == NULL)
1302 return FALSE;
1303
1304 // Show object info (SymGetSymFromAddr64())
1305 DWORD64 dwAddress = DWORD64(pObject);
1306 DWORD64 dwDisplacement = 0;
1307 IMAGEHLP_SYMBOL64* pSym =
1308 (IMAGEHLP_SYMBOL64*)malloc(sizeof(IMAGEHLP_SYMBOL64) + STACKWALK_MAX_NAMELEN);
1309 memset(pSym, 0, sizeof(IMAGEHLP_SYMBOL64) + STACKWALK_MAX_NAMELEN);
1310 pSym->SizeOfStruct = sizeof(IMAGEHLP_SYMBOL64);
1311 pSym->MaxNameLength = STACKWALK_MAX_NAMELEN;
1312 if (this->m_sw->pSGSFA(this->m_hProcess, dwAddress, &dwDisplacement, pSym) == FALSE)
1313 {
1314 this->OnDbgHelpErr("SymGetSymFromAddr64", GetLastError(), dwAddress);
1315 return FALSE;
1316 }
1317 // Object name output
1318 this->OnOutput(pSym->Name);
1319
1320 free(pSym);
1321 return TRUE;
1322};
1323
1324BOOL __stdcall StackWalker::myReadProcMem(HANDLE hProcess,
1325 DWORD64 qwBaseAddress,

Callers 2

GlobalIntTestFunction · 0.80

Calls 3

LoadModulesMethod · 0.95
OnDbgHelpErrMethod · 0.95
OnOutputMethod · 0.95

Tested by

no test coverage detected