diff --git a/cmake/build_helpers.cmake b/cmake/build_helpers.cmake index b463da53f..acd54887d 100644 --- a/cmake/build_helpers.cmake +++ b/cmake/build_helpers.cmake @@ -601,13 +601,12 @@ function(generatePDBs) COMMAND (${CMAKE_COMMAND} -E remove -f ${CMAKE_BINARY_DIR}/${GENERATED_PDB}.pdb && ${cv2pdb_SOURCE_DIR}/cv2pdb64.exe - $ - ${CMAKE_BINARY_DIR}/${GENERATED_PDB}.pdb) || (exit 0) + $) || (exit 0) DEPENDS $ COMMAND_EXPAND_LISTS) target_sources(imhex_all PRIVATE ${CMAKE_BINARY_DIR}/${GENERATED_PDB}.pdb) - install(FILES ${CMAKE_BINARY_DIR}/${GENERATED_PDB}.pdb DESTINATION ".") + install(FILES $/${GENERATED_PDB}.pdb DESTINATION ".") endforeach () diff --git a/lib/libimhex/source/helpers/stacktrace.cpp b/lib/libimhex/source/helpers/stacktrace.cpp index ec0b7f579..e30476c80 100644 --- a/lib/libimhex/source/helpers/stacktrace.cpp +++ b/lib/libimhex/source/helpers/stacktrace.cpp @@ -1,5 +1,4 @@ #include -#include #include #if defined(OS_WINDOWS) @@ -41,25 +40,24 @@ stackFrame.AddrStack.Mode = AddrModeFlat; while (true) { - - if (!StackWalk64( + if (StackWalk64( image, process, thread, &stackFrame, &context, nullptr, - SymFunctionTableAccess64, SymGetModuleBase64, nullptr)) + SymFunctionTableAccess64, SymGetModuleBase64, nullptr) == FALSE) break; if (stackFrame.AddrReturn.Offset == stackFrame.AddrPC.Offset) break; - char buffer[sizeof(SYMBOL_INFO) + MAX_SYM_NAME * sizeof(TCHAR)]; - auto symbol = (PSYMBOL_INFO)buffer; + std::array buffer = {}; + auto symbol = (PSYMBOL_INFO)buffer.data(); symbol->SizeOfStruct = sizeof(SYMBOL_INFO); symbol->MaxNameLen = MAX_SYM_NAME; DWORD64 displacementSymbol = 0; - std::string symbolName; + const char *symbolName; if (SymFromAddr(process, stackFrame.AddrPC.Offset, &displacementSymbol, symbol) == TRUE) { - symbolName = hex::format("{} (0x{:X})", symbol->Name, symbol->Address); + symbolName = symbol->Name; } else { symbolName = "??"; } @@ -70,9 +68,9 @@ line.SizeOfStruct = sizeof(IMAGEHLP_LINE64); DWORD displacementLine = 0; - u32 lineNumber; - std::string fileName; + u32 lineNumber; + const char *fileName; if (SymGetLineFromAddr64(process, stackFrame.AddrPC.Offset, &displacementLine, &line) == TRUE) { lineNumber = line.LineNumber; fileName = line.FileName; @@ -90,7 +88,6 @@ demangledName = symbolName; stackTrace.push_back(StackFrame { fileName, demangledName, lineNumber }); - } SymCleanup(process);