2009-10-05 1 views
0

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

Я нашел вопрос о StackOverflow, что подробности его использование: getting the current stack trace on mac os x

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

  1. Входит ли оно в main.cpp?
  2. Он живет в ловушке части попытаться захватить блок?

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

ответ

1

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

Вот пример улавливания сигналов. Он пойдет в 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); 
} 
+0

Его ошибка на шине, пока приложение не работает. Так может ли кто-нибудь представить пример добавления к обработчику сигнала? –