mirror of
https://github.com/lightpanda-io/browser.git
synced 2025-10-29 07:03:29 +00:00
Make stacktraces available in debug via page.stackTrace()
Automatically include the stack trace in a `console.error` output. This is useful because code frequently does: ``` try blah(); catch (e) console.log(e); ``` Which we log, but, without this, don't get the stack.
This commit is contained in:
@@ -66,7 +66,11 @@ pub const Console = struct {
|
|||||||
if (values.len == 0) {
|
if (values.len == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
log.info(.console, "error", .{ .args = try serializeValues(values, page) });
|
|
||||||
|
log.info(.console, "error", .{
|
||||||
|
.args = try serializeValues(values, page),
|
||||||
|
.stack = page.stackTrace() catch "???",
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn _clear(_: *const Console) void {}
|
pub fn _clear(_: *const Console) void {}
|
||||||
|
|||||||
@@ -666,6 +666,13 @@ pub const Page = struct {
|
|||||||
const form = (try Element._closest(element, "form", self)) orelse return null;
|
const form = (try Element._closest(element, "form", self)) orelse return null;
|
||||||
return @ptrCast(form);
|
return @ptrCast(form);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn stackTrace(self: *Page) !?[]const u8 {
|
||||||
|
if (comptime builtin.mode == .Debug) {
|
||||||
|
return self.scope.stackTrace();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
const DelayedNavigation = struct {
|
const DelayedNavigation = struct {
|
||||||
|
|||||||
@@ -601,6 +601,10 @@ pub fn Env(comptime State: type, comptime WebApis: type) type {
|
|||||||
return persistent_object.castToObject();
|
return persistent_object.castToObject();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn stackTrace(self: *const Scope) !?[]const u8 {
|
||||||
|
return stackForLogs(self.call_arena, self.isolate);
|
||||||
|
}
|
||||||
|
|
||||||
// Executes the src
|
// Executes the src
|
||||||
pub fn exec(self: *Scope, src: []const u8, name: ?[]const u8) !Value {
|
pub fn exec(self: *Scope, src: []const u8, name: ?[]const u8) !Value {
|
||||||
const isolate = self.isolate;
|
const isolate = self.isolate;
|
||||||
|
|||||||
Reference in New Issue
Block a user