尝试引发异常时SIGABRT

我有一个非常奇怪的问题,已经引起了我几个小时的关注: 在我正在使用的软件上输入错误的信息时,我会产生一个异常(这当然是有意的)。运行正常,我在执行程序时看到正确的错误消息。 但是,当我通过API传递完全相同的输入(产生几乎相同的控制流)时,程序崩溃。通过调试,我看到以下内容(我使用gdb进行调试): 成功实例化了Exception类(在这种情况下称为UserExcption,并且该类没有虚拟方法,并且其前任也没有任何虚拟方法)。 当我将\“放入throw语句\”(想说我只是在实例化异常对象之后继续执行)时,得到以下输出:   (gdb)秒      纯虚拟方法称为      程序收到信号SIGABRT,异常终止。      __pthread_kill中的0x00007fff95c64ce2()      (gdb) 我真的不明白这里会发生什么。由于现在涉及到所有虚拟方法(据我所知),所以我也无法想象有一些悬空指针或类似的东西(否则,我希望得到一个空指针异常)。由于整个程序很大,而且我不知道在哪里查找问题,因此我也无法重现它。 有谁知道这种行为的根源是什么? 最佳马库斯     
已邀请:
        我想知道您是否正在从构造函数或析构函数中调用某些(不是纯粹的)虚拟方法,或者可能是某些强制转换出错。我猜,应该在异常类中检查此错误,因为在抛出一个实例时会收到错误。 确实,编译器将阻止您使用未实现的纯虚函数的类。另一方面,虚函数多态性在构造函数和析构函数中并不完全安全。 只是一个建议,但没有看到代码,这只是一个假设。 我也会进行一个干净的构建,也许由于某种原因您有一些陈旧的对象。     

要回复问题请先登录注册