Files
esp32-racer/software/zig_main/imports/panic.zig

22 lines
770 B
Zig

const sys = @import("sys");
const log = @import("log");
/// panic handler for esp-idf
pub fn panic(msg: []const u8, stack_trace: ?*@import("std").builtin.StackTrace, _: ?usize) noreturn {
sys.esp_log_write(log.default_level, "PANIC", "[%lu ms] PANIC: %.*s\n", sys.esp_log_timestamp(), msg.len, msg.ptr);
// try print stack trace if available
if (stack_trace) |st| {
var i: usize = st.index;
if (i > st.instruction_addresses.len) i = st.instruction_addresses.len;
var idx: usize = 0;
while (idx < i) : (idx += 1) {
sys.esp_log_write(log.default_level, "PANIC", " #%u: 0x%08lx\n", idx, st.instruction_addresses[idx]);
}
}
while (true) {
asm volatile ("" ::: .{ .memory = true });
}
}