无需登录 数据私有 本地保存

错误堆栈追踪解析器 - 提取源映射位置

10
0
0
0

错误堆栈追踪解析器

解析JavaScript错误堆栈,支持Source Map逆向映射,定位原始源码位置

0
堆栈总行数
0
解析成功
0
涉及文件数
0
Source Map映射成功
堆栈信息 支持 Chrome / Firefox / Safari / Node.js 格式
数据仅在本地浏览器处理,不会上传到任何服务器
Source Map 配置
若URL无法访问,请使用下方粘贴方式

拖拽 .map 文件到此处

常见问题与知识点

错误堆栈追踪(Stack Trace)是程序在抛出异常时记录的调用栈快照,它显示了错误发生时函数调用的完整链路。在JavaScript中,当运行时错误发生时,引擎会生成包含函数名、文件路径、行号和列号的堆栈信息。不同浏览器和运行环境(Chrome V8、Firefox SpiderMonkey、Safari JSC、Node.js)生成的堆栈格式略有不同,但都包含定位错误所需的关键位置信息。通过解析堆栈追踪,开发者可以快速定位到问题代码的精确位置。

Source Map(源映射)是一种JSON格式的文件(通常以.map结尾),它建立了压缩/编译后代码原始源代码之间的位置对应关系。现代前端构建工具(如Webpack、Vite、Rollup、esbuild)在打包时通常会生成Source Map。Source Map中包含:
sources:原始源文件列表
mappings:使用VLQ编码的位置映射数据
sourcesContent(可选):原始源代码内容
通过Source Map,当生产环境的压缩代码抛出错误时,开发者可以将堆栈中的位置(如bundle.min.js:1:2345)反向映射回原始源码位置(如src/components/App.tsx:42:15),极大提升调试效率。

主要浏览器和环境的堆栈格式差异:
Chrome / Edge (V8引擎)at functionName (url:line:col),以"at"开头,函数名和位置用空格分隔
Firefox (SpiderMonkey)functionName@url:line:col,使用"@"符号分隔函数名和位置
Safari (JavaScriptCore):类似Firefox,使用@分隔,但堆栈格式可能更简洁
Node.js:与Chrome V8格式一致,使用绝对文件路径
本工具支持自动识别以上所有格式,无需手动选择。

VLQ(Variable Length Quantity)是一种变长编码方式,用于在Source Map中高效存储位置映射数据。它使用Base64字符集(A-Za-z0-9+/)表示数值,每个字符的低5位存储数据,最高位表示是否还有后续字符。数值使用ZigZag编码处理有符号数。Source Map的mappings字符串结构为:
• 分号;分隔不同的生成文件行
• 逗号,分隔同一行内的不同映射段
• 每个段包含1-5个VLQ值:[生成列, 源文件索引, 源行号, 源列号, 名称索引]
所有值(除第一个外)都是相对于前一个段的增量值,这种设计使得mappings字符串非常紧凑。本工具内置了完整的VLQ解码器,能够精确还原每个位置的映射关系。

生产环境中使用Source Map需要注意安全性
不要公开部署Source Map:如果.map文件可被公网访问,任何人都可以还原你的源代码。建议将Source Map存储在内部服务器或仅上传到错误监控平台(如Sentry、Datadog)
使用私有Source Map:构建时可生成不带sourcesContent的Source Map,仅保留位置映射
上传到错误追踪服务:将Source Map上传到Sentry、Bugsnag等服务,它们会自动进行堆栈反向解析
隐藏sourceMappingURL注释:在生产部署时移除JS文件末尾的//# sourceMappingURL=...注释,防止浏览器自动请求.map文件
使用本工具离线解析:所有数据在浏览器本地处理,不会上传到任何服务器,安全可靠。

现代前端项目通常使用Webpack、Vite、Rollup等工具进行代码打包和压缩,最终产出的bundle文件经过以下处理:
合并:多个源文件合并为一个bundle
压缩/丑化:变量名缩短、空白删除、代码折叠
转译:TypeScript/JSX转为JavaScript
这些处理使得bundle中的行号和列号与原始源码完全不对应。例如,原始的src/utils/helper.ts:58:12可能在bundle中变成了bundle.min.js:1:45230。只有通过Source Map中的mappings数据,才能将压缩位置精确还原到原始源码位置,这也是本工具的核心价值所在。