c++ - 在 gcc/linux 中运行 C++ 上的函数?
问题描述
在 gcc/linux 中是否有任何方法可以在任何 C++ throw 语句执行后立即调用用户定义的函数,但在堆栈展开到捕获之前?(我想捕获一个堆栈跟踪。)
(在 gdb 中我可以编写catch throw
. 无论如何以编程方式完成编译器扩展?)
解决方案
如果你正在使用libstdc++
,你可以覆盖__cxa_throw()
.
例如:
#include <cstring>
void __cxa_throw(void *, void *, void (*)(void *)) {
std::puts("bad luck");
}
int main() {
throw 13;
}
推荐阅读
- python - 使用 Numpy linalg.lstsq 求解线性系统时获得(显着)不准确的值
- python - 根据其中一列中的值过滤 DataFrame 中的列
- amazon-web-services - terraform 生成文件,压缩并上传到 s3
- python - 如何从 twitter 用户位置中提取位置?
- javascript - 您可以在页面加载时在一个数组中显示随机图像和视频吗?
- vue.js - 内联 SVG 未在 chrome 中显示
- sql-server - 我可以用通配符替换吗
- java - 如何将 .NET DateTime.toBinary() 转换为 java 日期
- python - 如何从 gmail 下载 Word 文档附件?
- c# - 方法在当前上下文中不存在,因为它在另一个文件中(C#)