MCPcopy Create free account
hub / github.com/ddopson/node-segfault-handler / Init

Method Init

src/StackWalker.cpp:219–309  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

217 m_szSymPath = NULL;
218 }
219 BOOL Init(LPCSTR szSymPath)
220 {
221 if (m_parent == NULL)
222 return FALSE;
223 // Dynamically load the Entry-Points for dbghelp.dll:
224 // First try to load the newsest one from
225 TCHAR szTemp[4096];
226 // But before wqe do this, we first check if the ".local" file exists
227 if (GetModuleFileName(NULL, szTemp, 4096) > 0)
228 {
229 _tcscat_s(szTemp, _T(".local"));
230 if (GetFileAttributes(szTemp) == INVALID_FILE_ATTRIBUTES)
231 {
232 // ".local" file does not exist, so we can try to load the dbghelp.dll from the "Debugging Tools for Windows"
233 if (GetEnvironmentVariable(_T("ProgramFiles"), szTemp, 4096) > 0)
234 {
235 _tcscat_s(szTemp, _T("\\Debugging Tools for Windows\\dbghelp.dll"));
236 // now check if the file exists:
237 if (GetFileAttributes(szTemp) != INVALID_FILE_ATTRIBUTES)
238 {
239 m_hDbhHelp = LoadLibrary(szTemp);
240 }
241 }
242 // Still not found? Then try to load the 64-Bit version:
243 if ( (m_hDbhHelp == NULL) && (GetEnvironmentVariable(_T("ProgramFiles"), szTemp, 4096) > 0) )
244 {
245 _tcscat_s(szTemp, _T("\\Debugging Tools for Windows 64-Bit\\dbghelp.dll"));
246 if (GetFileAttributes(szTemp) != INVALID_FILE_ATTRIBUTES)
247 {
248 m_hDbhHelp = LoadLibrary(szTemp);
249 }
250 }
251 }
252 }
253 if (m_hDbhHelp == NULL) // if not already loaded, try to load a default-one
254 m_hDbhHelp = LoadLibrary( _T("dbghelp.dll") );
255 if (m_hDbhHelp == NULL)
256 return FALSE;
257 pSI = (tSI) GetProcAddress(m_hDbhHelp, "SymInitialize" );
258 pSC = (tSC) GetProcAddress(m_hDbhHelp, "SymCleanup" );
259
260 pSW = (tSW) GetProcAddress(m_hDbhHelp, "StackWalk64" );
261 pSGO = (tSGO) GetProcAddress(m_hDbhHelp, "SymGetOptions" );
262 pSSO = (tSSO) GetProcAddress(m_hDbhHelp, "SymSetOptions" );
263
264 pSFTA = (tSFTA) GetProcAddress(m_hDbhHelp, "SymFunctionTableAccess64" );
265 pSGLFA = (tSGLFA) GetProcAddress(m_hDbhHelp, "SymGetLineFromAddr64" );
266 pSGMB = (tSGMB) GetProcAddress(m_hDbhHelp, "SymGetModuleBase64" );
267 pSGMI = (tSGMI) GetProcAddress(m_hDbhHelp, "SymGetModuleInfo64" );
268 //pSGMI_V3 = (tSGMI_V3) GetProcAddress(m_hDbhHelp, "SymGetModuleInfo64" );
269 pSGSFA = (tSGSFA) GetProcAddress(m_hDbhHelp, "SymGetSymFromAddr64" );
270 pUDSN = (tUDSN) GetProcAddress(m_hDbhHelp, "UnDecorateSymbolName" );
271 pSLM = (tSLM) GetProcAddress(m_hDbhHelp, "SymLoadModule64" );
272 pSGSP =(tSGSP) GetProcAddress(m_hDbhHelp, "SymGetSearchPath" );
273
274 if ( pSC == NULL || pSFTA == NULL || pSGMB == NULL || pSGMI == NULL ||
275 pSGO == NULL || pSGSFA == NULL || pSI == NULL || pSSO == NULL ||
276 pSW == NULL || pUDSN == NULL || pSLM == NULL )

Callers 1

LoadModulesMethod · 0.80

Calls 1

OnSymInitMethod · 0.80

Tested by

no test coverage detected