dumpTrace static method
Dumps a stack trace in a human-readable format with minimal emojis.
Parses the stack trace and displays it with clickable file paths to make debugging easier and more efficient.
Implementation
static void dumpTrace(
StackTrace stackTrace, {
String? title,
bool alwaysPrint = false,
}) {
if (!_canLog(alwaysPrint)) return;
final traceTitle = title ?? 'JET STACK TRACE';
_log('╔╣ $traceTitle ╠══');
_log('╠══════════════');
final lines = stackTrace.toString().split('\n');
int frameNumber = 1;
for (final line in lines) {
if (line.trim().isEmpty) continue;
// Parse stack trace line
final parsedFrame = _parseStackTraceLine(line.trim());
if (parsedFrame != null) {
// Extract file name from full path
final fileName = _extractFileName(parsedFrame['file']);
// Create clickable file path
final fileUrl = _formatClickableFilePath(
parsedFrame['file'],
parsedFrame['line'],
parsedFrame['column'],
);
// Display frame in the requested format
_log('╠╣ [ $frameNumber ] -> ${parsedFrame['method']} ╠══');
_log(
'╠ LINE [${parsedFrame['line'] ?? 'N/A'}] COLUMN [${parsedFrame['column'] ?? 'N/A'}]',
);
_log('╠ At ${fileName ?? 'unknown'}');
_log('╠ "${fileUrl ?? 'N/A'}"');
_log('╚════════════════════════');
frameNumber++;
} else {
// If we can't parse it, show it as raw
_log('╠╣ [ $frameNumber ] -> Unparsed Frame ╠══');
_log('╠ $line');
_log('╚════════════════════════');
frameNumber++;
}
}
_log('');
}