MCPcopy Create free account
hub / github.com/KDAB/GammaRay / ShowObject

Method ShowObject

3rdparty/StackWalker/StackWalker.cpp:1364–1401  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1362}
1363
1364BOOL StackWalker::ShowObject(LPVOID pObject)
1365{
1366 // Load modules if not done yet
1367 if (m_modulesLoaded == FALSE)
1368 this->LoadModules(); // ignore the result...
1369
1370 // Verify that the DebugHelp.dll was actually found
1371 if (this->m_sw->m_hDbhHelp == NULL)
1372 {
1373 SetLastError(ERROR_DLL_INIT_FAILED);
1374 return FALSE;
1375 }
1376
1377 // SymGetSymFromAddr64() is required
1378 if (this->m_sw->pSGSFA == NULL)
1379 return FALSE;
1380
1381 // Show object info (SymGetSymFromAddr64())
1382 DWORD64 dwAddress = DWORD64(pObject);
1383 DWORD64 dwDisplacement = 0;
1384 const SIZE_T symSize = sizeof(IMAGEHLP_SYMBOL64) + STACKWALK_MAX_NAMELEN;
1385 IMAGEHLP_SYMBOL64* pSym = (IMAGEHLP_SYMBOL64*) malloc(symSize);
1386 if (!pSym)
1387 return FALSE;
1388 memset(pSym, 0, symSize);
1389 pSym->SizeOfStruct = sizeof(IMAGEHLP_SYMBOL64);
1390 pSym->MaxNameLength = STACKWALK_MAX_NAMELEN;
1391 if (this->m_sw->pSGSFA(this->m_hProcess, dwAddress, &dwDisplacement, pSym) == FALSE)
1392 {
1393 this->OnDbgHelpErr("SymGetSymFromAddr64", GetLastError(), dwAddress);
1394 return FALSE;
1395 }
1396 // Object name output
1397 this->OnOutput(pSym->Name);
1398
1399 free(pSym);
1400 return TRUE;
1401};
1402
1403BOOL __stdcall StackWalker::myReadProcMem(HANDLE hProcess,
1404 DWORD64 qwBaseAddress,

Callers

nothing calls this directly

Calls 3

LoadModulesMethod · 0.95
OnDbgHelpErrMethod · 0.95
OnOutputMethod · 0.95

Tested by

no test coverage detected