从C ++中的ASM代码中捕获异常

时间:2017-11-24 16:39:18

标签: c++ exception assembly

我有一些奇怪的代码需要在asm块中调用throw函数,并且能够捕获抛出的异常。我的代码看起来像这样:

// Throwing Function
void throwing() __asm__("throwing");
void throwing() {
    throw "abc";
}

// Assembly function which calls throwing()
void asm_call() {
    __asm__ __volatile__ (
        "call throwing\n"
    );
}

// Main calls the assembly function in a try block
int main() {
    try {
        asm_call();
    } catch (...) {
        std::cout << "caught..." << std::endl;
    }

    return 0;
}

我无法得到被主要捕获的异常;它总是在到达throw "abc";行时终止。我看到了一个类似的问题here,我尝试了最佳答案,但它对我不起作用。是否可以捕获asm_call中抛出的异常?

我正在使用x64 Linux和g ++ 6.3.0。

0 个答案:

没有答案