| 1375 | } |
| 1376 | |
| 1377 | void StackWalker::OnCallstackEntry(CallstackEntryType eType, CallstackEntry& entry) |
| 1378 | { |
| 1379 | CHAR buffer[STACKWALK_MAX_NAMELEN]; |
| 1380 | size_t maxLen = STACKWALK_MAX_NAMELEN; |
| 1381 | #if _MSC_VER >= 1400 |
| 1382 | maxLen = _TRUNCATE; |
| 1383 | #endif |
| 1384 | if ((eType != lastEntry) && (entry.offset != 0)) |
| 1385 | { |
| 1386 | if (entry.name[0] == 0) |
| 1387 | MyStrCpy(entry.name, STACKWALK_MAX_NAMELEN, "(function-name not available)"); |
| 1388 | if (entry.undName[0] != 0) |
| 1389 | MyStrCpy(entry.name, STACKWALK_MAX_NAMELEN, entry.undName); |
| 1390 | if (entry.undFullName[0] != 0) |
| 1391 | MyStrCpy(entry.name, STACKWALK_MAX_NAMELEN, entry.undFullName); |
| 1392 | if (entry.lineFileName[0] == 0) |
| 1393 | { |
| 1394 | MyStrCpy(entry.lineFileName, STACKWALK_MAX_NAMELEN, "(filename not available)"); |
| 1395 | if (entry.moduleName[0] == 0) |
| 1396 | MyStrCpy(entry.moduleName, STACKWALK_MAX_NAMELEN, "(module-name not available)"); |
| 1397 | _snprintf_s(buffer, maxLen, "%p (%s): %s: %s\n", (LPVOID)entry.offset, entry.moduleName, |
| 1398 | entry.lineFileName, entry.name); |
| 1399 | } |
| 1400 | else |
| 1401 | _snprintf_s(buffer, maxLen, "%s (%d): %s\n", entry.lineFileName, entry.lineNumber, |
| 1402 | entry.name); |
| 1403 | buffer[STACKWALK_MAX_NAMELEN - 1] = 0; |
| 1404 | OnOutput(buffer); |
| 1405 | } |
| 1406 | } |
| 1407 | |
| 1408 | void StackWalker::OnDbgHelpErr(LPCSTR szFuncName, DWORD gle, DWORD64 addr) |
| 1409 | { |
no test coverage detected