diff options
| author | DanielGavin <danielgavin5@hotmail.com> | 2023-06-24 10:15:54 +0200 |
|---|---|---|
| committer | DanielGavin <danielgavin5@hotmail.com> | 2023-06-24 10:15:54 +0200 |
| commit | 7365253eb458c17b09b672fb4636ae91ff9c0b25 (patch) | |
| tree | 1b3182a18a10638fd553cc8807edd3eded5d52c3 /src | |
| parent | 1ae79dc75885143699b2de84cc80d6c673947b02 (diff) | |
remove pdf dump
Diffstat (limited to 'src')
| -rw-r--r-- | src/dump_windows.odin | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/src/dump_windows.odin b/src/dump_windows.odin deleted file mode 100644 index 04fcdbe..0000000 --- a/src/dump_windows.odin +++ /dev/null @@ -1,89 +0,0 @@ -package main - -import "core:os" -import "core:slice" -import "core:strings" -import "core:intrinsics" -import "core:runtime" -import "core:io" -import "core:sync" -import "core:path/filepath" -import "core:log" -import "core:fmt" - -import "pdb" - -import windows "core:sys/windows" - -set_stacktrace :: proc() { - pdb.SetUnhandledExceptionFilter(dump_stack_trace_on_exception_logger) -} - -print_source_code_location_builder :: proc( - using scl: runtime.Source_Code_Location, -) -> string { - using runtime - - builder := strings.builder_make() - - strings.write_string(&builder, file_path) - when ODIN_ERROR_POS_STYLE == .Unix { - strings.write_string(&builder, ':') - strings.write_i64(&builder, cast(i64)line) - strings.write_string(&builder, ':') - strings.write_i64(&builder, cast(i64)column) - strings.write_string(&builder, ':') - } else { - strings.write_string(&builder, "(") - strings.write_i64(&builder, cast(i64)line) - strings.write_string(&builder, ":") - strings.write_i64(&builder, cast(i64)column) - strings.write_string(&builder, ")") - } - strings.write_string(&builder, procedure) - strings.write_string(&builder, "()\n") - - return strings.to_string(builder) -} - - -dump_stack_trace_on_exception_logger :: proc "stdcall" ( - ExceptionInfo: ^windows.EXCEPTION_POINTERS, -) -> windows.LONG { - using pdb - context = runtime.default_context() // TODO: use a more efficient one-off allocators - context.logger = logger^ - - builder := strings.builder_make() - - sync.guard(&_dumpStackTrackMutex) - - if ExceptionInfo.ExceptionRecord != nil { - strings.write_string( - &builder, - fmt.tprintf( - "%v, Flags: 0x %v", - ExceptionInfo.ExceptionRecord.ExceptionCode, - ExceptionInfo.ExceptionRecord.ExceptionFlags, - ), - ) - } - - ctxt := cast(^CONTEXT)ExceptionInfo.ContextRecord - traceBuf: [64]StackFrame - traceCount := capture_stack_trace_from_context(ctxt, traceBuf[:]) - strings.write_string(&builder, " Stacktrace:") - strings.write_uint(&builder, traceCount) - strings.write_string(&builder, "\n") - srcCodeLocs: RingBuffer(runtime.Source_Code_Location) - init_rb(&srcCodeLocs, 64) - parse_stack_trace(traceBuf[:traceCount], true, &srcCodeLocs) - for i in 0 ..< srcCodeLocs.len { - scl := get_rb(&srcCodeLocs, i) - strings.write_string(&builder, print_source_code_location_builder(scl)) - } - - log.error(strings.to_string(builder)) - - return windows.EXCEPTION_CONTINUE_SEARCH -} |