Где я могу использовать BackTrace звонки на Mac - PullRequest
0 голосов
/ 05 октября 2009

Я хочу получить BackTrace из моего сбойного приложения C ++ Mac, однако я новичок в Mac и не знаю, как лучше это сделать.

Я нашел вопрос о stackoverflow, который подробно описывает его использование: Получение текущей трассировки стека на Mac OS X

Однако моя проблема в том, что я не вижу, где код должен жить?

  1. Это идет в main.cpp?
  2. Живет ли он в уловленной части попробуй поймать блок?

Я мог бы сделать с некоторыми примерами полного кода, но у меня проблемы с их поиском.

1 Ответ

1 голос
/ 05 октября 2009

Код, указанный в другом вопросе, должен идти туда, где он будет выполнен после сбоя.В зависимости от того, что происходит, это может быть либо в блоке перехвата, если генерируется исключение, либо в обработчике сигнала, если происходит сбой программы, например, из-за ошибки сегмента или ошибки шины.

Вот пример для перехвата сигналов.Это пошло бы в 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);
}
...