Solaris上的异常处理机制 我正在为C++应用程序构建一个错误处理机制。现在,我使用VectoredExceptionHandling完成了windows部分,我想知道Solaris上是否有类似的概念。基本上,每当从程序中的任何地方抛出异常时,我都希望调用回调。在windows下,您可以使用AddVectoredExceptionHandler()注册回调。对于Solaris,我该如何做到这一点?
如果这能起作用,则不是100%,但您可以尝试模仿gdb的要点的工作方式:请参见以下关键信息: “在调用异常处理程序之前停止,您需要了解实现。在GNU C++中,通过调用一个名为y.raseeExExtExchange的库函数来引发异常,该函数具有以下ANSI C接口:Solaris上的异常处理机制 我正在为C++应用程序构建一个错误处理机制。现在,我使用VectoredExceptionHandling完成了windows部分,我想知道Solaris上是否有类似的概念。基本上,每当从程序中的任何地方抛出异常时,我都希望调用回调。在windows下,您可以使用AddVectoredExceptionHandler()注册回调。对于Solaris,我该如何做到这一点?,c++,exception-handling,solaris,C++,Exception Handling,Solaris,如果这能起作用,则不是100%,但您可以尝试模仿gdb的要点的工作方式:请参见以下关键信息: “在调用异常处理程序之前停止,您需要了解实现。在GNU C++中,通过调用一个名为y.raseeExExtExchange的库函数来引发异常,该函数具有以下ANSI C接口: /* addr is where the exception identifier is stored. id is the exception identifier. */ void __raise_exception
/* addr is where the exception identifier is stored.
id is the exception identifier. */
void __raise_exception (void **addr, void *id);
要使调试器在堆栈展开之前捕获所有异常,请在_raise_exception上设置断点
所以,我猜您可以通过LD_预加载技巧安装自己的u raise_异常这些东西主要取决于编译器,我们想知道你是在混合Windows原生结构化异常处理(SEH)和C++异常吗?代码> VCTERDEXCEPROCEDATION处理< /COD>是SEH,不是C++异常。Solaris没有SEH异常。@ MalSalts:在Windows上的SEH之上不是C++异常吗?@马克西姆:MSVC++异常位于Win32,不确定Win64上的英特尔C++或MSVC++。我实际上不知道,我正在注册回调,它在抛出异常时被调用(通过抛出“…”);非常感谢。老实说,在UNIX世界中看到一个更“合适”的解决方案会给我留下深刻的印象——它的功能真是太奇怪了。。。我是说,人们编写异常处理程序是为了处理异常情况,对吗?那么,除非你是一个调试器,否则你为什么要在上面安装一些东西呢?但是,微软人有他们的想法,我相信他们在提供这种“向量化异常处理”时考虑到了这一点。