首页 > 解决方案 > 在 gcc/linux 中运行 C++ 上的函数?

问题描述

在 gcc/linux 中是否有任何方法可以在任何 C++ throw 语句执行后立即调用用户定义的函数,但在堆栈展开到捕获之前?(我想捕获一个堆栈跟踪。)

(在 gdb 中我可以编写catch throw. 无论如何以编程方式完成编译器扩展?)

标签: c++linuxgccc++17libstdc++

解决方案


如果你正在使用libstdc++,你可以覆盖__cxa_throw().

例如:

#include <cstring>

void __cxa_throw(void *, void *, void (*)(void *)) {
    std::puts("bad luck");
}

int main() {
    throw 13;
}

推荐阅读