Solaris的异常处理机制

Exception handling mechanism on Solaris

本文关键字:机制 异常处理 Solaris      更新时间:2023-10-16

我正在为c++应用程序构建一个错误处理机制。现在,我使用VectoredExceptionHandling完成了windows部分,我想知道Solaris上是否有类似的概念。基本上,无论何时从程序中的任何地方抛出异常,我都希望调用回调。在windows下,您可以使用AddVectoredExceptionHandler()注册回调。如何在Solaris上执行此操作?

如果不能100%工作,但您可以尝试模仿gdb的捕获点工作方式:参见http://www.delorie.com/gnu/docs/gdb/gdb_31.html关键信息是:

"要在调用异常处理程序之前停止,您需要了解一些实现知识。在GNU c++中,异常是通过调用名为__raise_exception的库函数引发的,该函数具有以下ANSI C接口:

/* addr is where the exception identifier is stored.
   id is the exception identifier.  */
void __raise_exception (void **addr, void *id);

要使调试器在任何堆栈展开之前捕获所有异常,请在__raise_exception"

上设置断点所以,我的猜测是,你可以安装自己的__raise_exception通过LD_PRELOAD技巧,例如。