MCPcopy Create free account
hub / github.com/WinMerge/winmerge / ShowObject

Method ShowObject

Externals/StackWalker/Main/StackWalker/StackWalker.cpp:1495–1532  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1493}
1494
1495BOOL StackWalker::ShowObject(LPVOID pObject)
1496{
1497 // Load modules if not done yet
1498 if (m_modulesLoaded == FALSE)
1499 this->LoadModules(); // ignore the result...
1500
1501 // Verify that the DebugHelp.dll was actually found
1502 if (this->m_sw->m_hDbhHelp == NULL)
1503 {
1504 SetLastError(ERROR_DLL_INIT_FAILED);
1505 return FALSE;
1506 }
1507
1508 // SymGetSymFromAddr64() is required
1509 if (this->m_sw->pSGSFA == NULL)
1510 return FALSE;
1511
1512 // Show object info (SymGetSymFromAddr64())
1513 DWORD64 dwAddress = DWORD64(pObject);
1514 DWORD64 dwDisplacement = 0;
1515 const SIZE_T symSize = sizeof(IMAGEHLP_SYMBOL64) + STACKWALK_MAX_NAMELEN;
1516 IMAGEHLP_SYMBOL64* pSym = (IMAGEHLP_SYMBOL64*) malloc(symSize);
1517 if (!pSym)
1518 return FALSE;
1519 memset(pSym, 0, symSize);
1520 pSym->SizeOfStruct = sizeof(IMAGEHLP_SYMBOL64);
1521 pSym->MaxNameLength = STACKWALK_MAX_NAMELEN;
1522 if (this->m_sw->pSGSFA(this->m_hProcess, dwAddress, &dwDisplacement, pSym) == FALSE)
1523 {
1524 this->OnDbgHelpErr("SymGetSymFromAddr64", GetLastError(), dwAddress);
1525 return FALSE;
1526 }
1527 // Object name output
1528 this->OnOutput(pSym->Name);
1529
1530 free(pSym);
1531 return TRUE;
1532};
1533
1534void StackWalker::ClearCSEntryInline(CallstackEntry& csEntry)
1535{

Callers 2

GlobalIntTestFunction · 0.80

Calls 3

LoadModulesMethod · 0.95
OnDbgHelpErrMethod · 0.95
OnOutputMethod · 0.95

Tested by

no test coverage detected