| 1277 | } |
| 1278 | |
| 1279 | void StackWalker::OnCallstackEntry(CallstackEntryType eType, CallstackEntry &entry) |
| 1280 | { |
| 1281 | CHAR buffer[STACKWALK_MAX_NAMELEN]; |
| 1282 | if ( (eType != lastEntry) && (entry.offset != 0) ) |
| 1283 | { |
| 1284 | if (entry.name[0] == 0) |
| 1285 | MyStrCpy(entry.name, STACKWALK_MAX_NAMELEN, "(function-name not available)"); |
| 1286 | if (entry.undName[0] != 0) |
| 1287 | MyStrCpy(entry.name, STACKWALK_MAX_NAMELEN, entry.undName); |
| 1288 | if (entry.undFullName[0] != 0) |
| 1289 | MyStrCpy(entry.name, STACKWALK_MAX_NAMELEN, entry.undFullName); |
| 1290 | if (entry.lineFileName[0] == 0) |
| 1291 | { |
| 1292 | MyStrCpy(entry.lineFileName, STACKWALK_MAX_NAMELEN, "(filename not available)"); |
| 1293 | if (entry.moduleName[0] == 0) |
| 1294 | MyStrCpy(entry.moduleName, STACKWALK_MAX_NAMELEN, "(module-name not available)"); |
| 1295 | _snprintf_s(buffer, STACKWALK_MAX_NAMELEN, "%p (%s): %s: %s\n", (LPVOID) entry.offset, entry.moduleName, entry.lineFileName, entry.name); |
| 1296 | } |
| 1297 | else |
| 1298 | _snprintf_s(buffer, STACKWALK_MAX_NAMELEN, "%s (%d): %s\n", entry.lineFileName, entry.lineNumber, entry.name); |
| 1299 | buffer[STACKWALK_MAX_NAMELEN-1] = 0; |
| 1300 | OnOutput(buffer); |
| 1301 | } |
| 1302 | } |
| 1303 | |
| 1304 | void StackWalker::OnDbgHelpErr(LPCSTR szFuncName, DWORD gle, DWORD64 addr) |
| 1305 | { |
no test coverage detected