代码之家  ›  专栏  ›  技术社区  ›  Phil Hannent

在Mac上我在哪里使用回溯呼叫

  •  0
  • Phil Hannent  · 技术社区  · 16 年前

    我想从我崩溃的C++MAC应用中得到一个回溯,但是我对MAC是新的,我不知道如何最好地去处理它。

    我在stackoverflow上发现一个问题,详细说明了它的用法: getting the current stack trace on mac os x

    然而,我的问题是我看不到代码应该在哪里存在?

    1. 它在main.cpp中吗?
    2. 它生活在 试着接住挡块?

    我可以使用一些完整的代码示例,但很难找到它们。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Jonathan Leffler    16 年前

    另一个问题中提到的代码需要在崩溃后执行到哪里。这取决于发生的情况,如果抛出异常,可能在catch块中,或者如果程序由于例如SEG故障或总线错误而崩溃,则可能在信号处理程序中。

    下面是一个捕捉信号的例子。它将进入main()。

    static void CatchSignal(int num) {
    // code to execute when signal is caught
    }
    
    void InstallSignalHandler(const int which[15]) {
         for (int i = 1; i < 15; i++) 
             if (which[i] != 0 && which[i] != SIGABRT)
                signal(which[i],CatchSignal);
    }
    
    推荐文章