【问题标题】:Can't catch exception in asmjit无法在 asmjit 中捕获异常
【发布时间】:2017-03-15 20:32:00
【问题描述】:

我正在使用 asmjit,但遇到了问题。当在生成的 jit 代码 (x64) 中调用的函数抛出 c++ 异常时,即使我在 jit 函数调用之外进行 try-catch 也无法捕获它,这是为什么以及如何捕获异常?

【问题讨论】:

  • 请告诉我们minimal reproducible example
  • 我建议将问题更改为更通用的问题,例如“如何处理 JIT 生成的代码中的异常”,因为它与 asmjit 没有严格相关 - 我的意思是操作正在寻求解决方案与 asmjit 相关,但可以先以更通用的方式回答该问题,然后再展示如何使用 asmjit 来完成。

标签: c++ exception jit asmjit


【解决方案1】:

asmjit 的作者 Petr Kobalíček 通过电子邮件的回答,非常有帮助:

这在很大程度上取决于您所针对的操作系统。 AsmJit 没有提供任何异常处理的helper,所以需要自己处理异常。

如果您使用的是 Windows,则可以查看: https://msdn.microsoft.com/en-us/library/1eyas8tf.aspx

此外,检查 V8 等其他 JIT 引擎可以帮助您了解 JIT 代码通常如何处理异常。在 Windows 上,您可以为 JIT 代码使用的整个虚拟地址空间安装异常处理程序,这样您就不必为每个函数嵌入展开数据。

【讨论】:

    猜你喜欢
    • 2010-10-29
    • 1970-01-01
    • 2021-08-07
    • 2021-10-14
    • 2019-11-27
    • 2014-05-02
    • 2013-11-23
    • 2017-09-16
    相关资源
    最近更新 更多