Skip to content

Commit 73df41b

Browse files
authored
Merge pull request #753 from lightpanda-io/console_error_stack_trace
Make stacktraces available in debug via `page.stackTrace()`
2 parents d32fbfd + 7091b37 commit 73df41b

File tree

3 files changed

+16
-1
lines changed

3 files changed

+16
-1
lines changed

src/browser/console/console.zig

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,11 @@ pub const Console = struct {
6666
if (values.len == 0) {
6767
return;
6868
}
69-
log.info(.console, "error", .{ .args = try serializeValues(values, page) });
69+
70+
log.info(.console, "error", .{
71+
.args = try serializeValues(values, page),
72+
.stack = page.stackTrace() catch "???",
73+
});
7074
}
7175

7276
pub fn static_clear() void {}

src/browser/page.zig

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -671,6 +671,13 @@ pub const Page = struct {
671671
const form = (try Element._closest(element, "form", self)) orelse return null;
672672
return @ptrCast(form);
673673
}
674+
675+
pub fn stackTrace(self: *Page) !?[]const u8 {
676+
if (comptime builtin.mode == .Debug) {
677+
return self.scope.stackTrace();
678+
}
679+
return null;
680+
}
674681
};
675682

676683
const DelayedNavigation = struct {

src/runtime/js.zig

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,10 @@ pub fn Env(comptime State: type, comptime WebApis: type) type {
601601
return persistent_object.castToObject();
602602
}
603603

604+
pub fn stackTrace(self: *const Scope) !?[]const u8 {
605+
return stackForLogs(self.call_arena, self.isolate);
606+
}
607+
604608
// Executes the src
605609
pub fn exec(self: *Scope, src: []const u8, name: ?[]const u8) !Value {
606610
const isolate = self.isolate;

0 commit comments

Comments
 (0)