Crashlog: Windows: Show some memory stats for out of memory crashes
This commit is contained in:
@@ -159,6 +159,36 @@ static const char *GetAccessViolationTypeString(uint type)
|
||||
}
|
||||
buffer += seprintf(buffer, last, " Message: %s\n\n",
|
||||
message == nullptr ? "<none>" : message);
|
||||
|
||||
if (message != nullptr && strcasestr(message, "out of memory") != nullptr) {
|
||||
PROCESS_MEMORY_COUNTERS pmc;
|
||||
if (GetProcessMemoryInfo(GetCurrentProcess(), &pmc, sizeof(pmc))) {
|
||||
buffer += seprintf(buffer, last, " WorkingSetSize: " PRINTF_SIZE "\n", pmc.WorkingSetSize);
|
||||
buffer += seprintf(buffer, last, " PeakWorkingSetSize: " PRINTF_SIZE "\n", pmc.PeakWorkingSetSize);
|
||||
buffer += seprintf(buffer, last, " QuotaPagedPoolUsage: " PRINTF_SIZE "\n", pmc.QuotaPagedPoolUsage);
|
||||
buffer += seprintf(buffer, last, " QuotaPeakPagedPoolUsage: " PRINTF_SIZE "\n", pmc.QuotaPeakPagedPoolUsage);
|
||||
buffer += seprintf(buffer, last, " QuotaNonPagedPoolUsage: " PRINTF_SIZE "\n", pmc.QuotaNonPagedPoolUsage);
|
||||
buffer += seprintf(buffer, last, " QuotaPeakNonPagedPoolUsage: " PRINTF_SIZE "\n", pmc.QuotaPeakNonPagedPoolUsage);
|
||||
buffer += seprintf(buffer, last, " PagefileUsage: " PRINTF_SIZE "\n", pmc.PagefileUsage);
|
||||
buffer += seprintf(buffer, last, " PeakPagefileUsage: " PRINTF_SIZE "\n\n", pmc.PeakPagefileUsage);
|
||||
}
|
||||
PERFORMANCE_INFORMATION perf;
|
||||
if (GetPerformanceInfo(&perf, sizeof(perf))) {
|
||||
buffer += seprintf(buffer, last, " CommitTotal: " PRINTF_SIZE "\n", perf.CommitTotal);
|
||||
buffer += seprintf(buffer, last, " CommitLimit: " PRINTF_SIZE "\n", perf.CommitLimit);
|
||||
buffer += seprintf(buffer, last, " CommitPeak: " PRINTF_SIZE "\n", perf.CommitPeak);
|
||||
buffer += seprintf(buffer, last, " PhysicalTotal: " PRINTF_SIZE "\n", perf.PhysicalTotal);
|
||||
buffer += seprintf(buffer, last, " PhysicalAvailable: " PRINTF_SIZE "\n", perf.PhysicalAvailable);
|
||||
buffer += seprintf(buffer, last, " SystemCache: " PRINTF_SIZE "\n", perf.SystemCache);
|
||||
buffer += seprintf(buffer, last, " KernelTotal: " PRINTF_SIZE "\n", perf.KernelTotal);
|
||||
buffer += seprintf(buffer, last, " KernelPaged: " PRINTF_SIZE "\n", perf.KernelPaged);
|
||||
buffer += seprintf(buffer, last, " KernelNonpaged: " PRINTF_SIZE "\n", perf.KernelNonpaged);
|
||||
buffer += seprintf(buffer, last, " PageSize: " PRINTF_SIZE "\n", perf.PageSize);
|
||||
buffer += seprintf(buffer, last, " HandleCount: %u\n", (uint)perf.HandleCount);
|
||||
buffer += seprintf(buffer, last, " ProcessCount: %u\n", (uint)perf.ProcessCount);
|
||||
buffer += seprintf(buffer, last, " ThreadCount: %u\n\n", (uint)perf.ThreadCount);
|
||||
}
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user