Skip to content

Commit 844f225

Browse files
authored
Track when the stack trace symbolication succeeds (#187)
* parse empty and "address at" urls as non-hyperlinked text * track when a special stack trace symbolication occurs
1 parent ffa6bb6 commit 844f225

File tree

2 files changed

+28
-1
lines changed

2 files changed

+28
-1
lines changed

front_end/core/host/RNPerfMetrics.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,15 @@ class RNPerfMetrics {
270270
});
271271
}
272272

273+
stackTraceSymbolicationSucceeded(specialHermesFrameTypes: string[]): void {
274+
this.sendEvent({
275+
eventName: 'StackTraceSymbolicationSucceeded',
276+
params: {
277+
specialHermesFrameTypes,
278+
},
279+
});
280+
}
281+
273282
panelShown(_panelName: string, _isLaunching?: boolean): void {
274283
// no-op
275284
// We only care about the "main" and "drawer" panels for now via panelShownInLocation(…)
@@ -443,10 +452,18 @@ export type StackTraceSymbolicationFailed = Readonly<{
443452
}>,
444453
}>;
445454

455+
export type StackTraceSymbolicationSucceeded = Readonly<{
456+
eventName: 'StackTraceSymbolicationSucceeded',
457+
params: Readonly<{
458+
specialHermesFrameTypes: string[],
459+
}>,
460+
}>;
461+
446462
export type ReactNativeChromeDevToolsEvent =
447463
EntrypointLoadingStartedEvent|EntrypointLoadingFinishedEvent|DebuggerReadyEvent|BrowserVisibilityChangeEvent|
448464
BrowserErrorEvent|RemoteDebuggingTerminatedEvent|DeveloperResourceLoadingStartedEvent|
449465
DeveloperResourceLoadingFinishedEvent|FuseboxSetClientMetadataStartedEvent|FuseboxSetClientMetadataFinishedEvent|
450-
MemoryPanelActionStartedEvent|MemoryPanelActionFinishedEvent|PanelShownEvent|PanelClosedEvent|StackTraceSymbolicationFailed;
466+
MemoryPanelActionStartedEvent|MemoryPanelActionFinishedEvent|PanelShownEvent|PanelClosedEvent|
467+
StackTraceSymbolicationFailed|StackTraceSymbolicationSucceeded;
451468

452469
export type DecoratedReactNativeChromeDevToolsEvent = CommonEventFields&ReactNativeChromeDevToolsEvent;

front_end/panels/console/ErrorStackParser.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ export function parseSourcePositionsFromErrorStack(
7171

7272
const lines = stack.split('\n');
7373
const linkInfos = [];
74+
const specialHermesFramesParsed = new Set<SpecialHermesStackTraceFrameTypes>();
75+
7476
for (const line of lines) {
7577
const match = /^\s*at\s(async\s)?/.exec(line);
7678
if (!match) {
@@ -118,6 +120,9 @@ export function parseSourcePositionsFromErrorStack(
118120
} else {
119121
linkInfos.push({line, isCallFrame});
120122
}
123+
if (specialHermesFrameType !== null) {
124+
specialHermesFramesParsed.add(specialHermesFrameType);
125+
}
121126
continue;
122127
}
123128
let url = parseOrScriptMatch(debuggerModel, splitResult.url);
@@ -142,6 +147,11 @@ export function parseSourcePositionsFromErrorStack(
142147
},
143148
});
144149
}
150+
151+
if (linkInfos?.length) {
152+
Host.rnPerfMetrics.stackTraceSymbolicationSucceeded(Array.from(specialHermesFramesParsed));
153+
}
154+
145155
return linkInfos;
146156
}
147157

0 commit comments

Comments
 (0)