Loading basic_op/basop32.c +18 −4 Original line number Diff line number Diff line Loading @@ -175,6 +175,8 @@ static Word16 saturate (Word32 L_var1); #elif defined _WIN32 || defined _WIN64 #include <windows.h> #include <dbghelp.h> #pragma comment(lib, "Dbghelp.lib") /* Using macro instead of function here to avoid pushing new frames onto the stack */ #define PRINT_STACK() \ do { \ Loading @@ -195,14 +197,26 @@ static Word16 saturate (Word32 L_var1); module.SizeOfStruct = sizeof(IMAGEHLP_MODULE64); \ \ num_frames = CaptureStackBackTrace(0, 100, call_stack, NULL); \ if (num_frames > 11) num_frames -=8; \ for (i = 0; i < num_frames; ++i) { \ SymFromAddr(process, (DWORD64)(call_stack[i]), &offset, symbol); \ SymGetModuleInfo(process, (DWORD)symbol->ModBase, &module); \ IMAGEHLP_LINE *supp_info = (IMAGEHLP_LINE *)calloc(sizeof(IMAGEHLP_LINE), 1); \ supp_info->SizeOfStruct = sizeof(IMAGEHLP_LINE); \ DWORD dwLineDisplacement; \ if (SymGetLineFromAddr(process, (DWORD64)(call_stack[i]), &dwLineDisplacement, supp_info)) { \ if (i < 3){ \ printf("[BASOP] %i\t%s(%s+0x%llX) [0x%llX]\n", i, module.ModuleName, \ symbol->Name, offset, symbol->Address); \ } else { \ printf("[BASOP] %i\t%s(%s+0x%llX) [0x%llX] %s:%d\n", i, module.ModuleName, \ symbol->Name, offset, symbol->Address, supp_info->FileName, supp_info->LineNumber); \ } \ } \ } \ free(symbol); \ } while (0) #else #define PRINT_STACK() \ do { \ Loading Loading
basic_op/basop32.c +18 −4 Original line number Diff line number Diff line Loading @@ -175,6 +175,8 @@ static Word16 saturate (Word32 L_var1); #elif defined _WIN32 || defined _WIN64 #include <windows.h> #include <dbghelp.h> #pragma comment(lib, "Dbghelp.lib") /* Using macro instead of function here to avoid pushing new frames onto the stack */ #define PRINT_STACK() \ do { \ Loading @@ -195,14 +197,26 @@ static Word16 saturate (Word32 L_var1); module.SizeOfStruct = sizeof(IMAGEHLP_MODULE64); \ \ num_frames = CaptureStackBackTrace(0, 100, call_stack, NULL); \ if (num_frames > 11) num_frames -=8; \ for (i = 0; i < num_frames; ++i) { \ SymFromAddr(process, (DWORD64)(call_stack[i]), &offset, symbol); \ SymGetModuleInfo(process, (DWORD)symbol->ModBase, &module); \ IMAGEHLP_LINE *supp_info = (IMAGEHLP_LINE *)calloc(sizeof(IMAGEHLP_LINE), 1); \ supp_info->SizeOfStruct = sizeof(IMAGEHLP_LINE); \ DWORD dwLineDisplacement; \ if (SymGetLineFromAddr(process, (DWORD64)(call_stack[i]), &dwLineDisplacement, supp_info)) { \ if (i < 3){ \ printf("[BASOP] %i\t%s(%s+0x%llX) [0x%llX]\n", i, module.ModuleName, \ symbol->Name, offset, symbol->Address); \ } else { \ printf("[BASOP] %i\t%s(%s+0x%llX) [0x%llX] %s:%d\n", i, module.ModuleName, \ symbol->Name, offset, symbol->Address, supp_info->FileName, supp_info->LineNumber); \ } \ } \ } \ free(symbol); \ } while (0) #else #define PRINT_STACK() \ do { \ Loading