【发布时间】:2026-02-14 05:05:01
【问题描述】:
我正在为生成 x86 代码的 JavaScript JIT 编译器实现后端。有时,由于错误,我会遇到分段错误。追溯造成它们的原因可能非常困难。因此,我一直想知道是否会有一些“简单”的方法来捕获分段错误和其他此类崩溃,并获取导致错误的指令的地址。这样,我可以将地址映射回已编译的 x86 程序集,甚至可以映射回源代码。
这需要在 Linux 上运行,但最好在任何符合 POSIX 的系统上运行。在最坏的情况下,如果我无法捕获 seg 错误并在运行的 JIT 中获取 IP,我希望能够将其捕获到外部(内核日志?),也许只是让编译器转储一个大文件将地址映射到指令,我可以用 Python 脚本或其他东西进行匹配。
感谢任何想法/建议。如果您曾经参与过自己的编译器项目,请随时分享您自己的调试技巧。
【问题讨论】:
-
In a signal handler, how to know where the program is interrupted? 的可能重复 好吧,如果你只是捕获
SIGSEGV而不是SIGINT,它就是重复的。
标签: linux x86 segmentation-fault posix jit