Browse Source

Add doc.odin

gingerBill 1 year ago
parent
commit
5ac8e8f9fd
1 changed files with 50 additions and 0 deletions
  1. 50 0
      core/debug/trace/doc.odin

+ 50 - 0
core/debug/trace/doc.odin

@@ -0,0 +1,50 @@
+/*
+A debug stack trace library. Only works when debug symbols are enabled `-debug`.
+
+Example:
+	import "base:runtime"
+	import "core:debug/trace"
+
+	import "core:fmt"
+
+	global_trace_ctx: trace.Context
+
+	debug_trace_assertion_failure_proc :: proc(prefix, message: string, loc := #caller_location) -> ! {
+		runtime.print_caller_location(loc)
+		runtime.print_string(" ")
+		runtime.print_string(prefix)
+		if len(message) > 0 {
+			runtime.print_string(": ")
+			runtime.print_string(message)
+		}
+		runtime.print_byte('\n')
+
+		ctx := &global_trace_ctx
+		if !trace.in_resolve(ctx) {
+			runtime.print_string("Debug Trace:\n")
+			frames := trace.frames(ctx, skip=1, allocator=context.temp_allocator)
+			for f, i in frames {
+				fl := trace.resolve(ctx, f, context.temp_allocator)
+				if fl.loc.file_path == "" && fl.loc.line == 0 {
+					continue
+				}
+				runtime.print_caller_location(fl.loc)
+				runtime.print_string(" - frame ")
+				runtime.print_int(i)
+				runtime.print_byte('\n')
+			}
+		}
+		runtime.trap()
+	}
+
+	main :: proc() {
+		trace.init(&global_trace_ctx)
+		defer trace.destroy(&global_trace_ctx)
+
+		context.assertion_failure_proc = debug_trace_assertion_failure_proc
+
+		...
+	}
+
+*/
+package debug_trace