2009-10-05 5 views
0

Je veux obtenir un BackTrace à partir de mon application C++ Mac en panne, mais je suis nouveau sur le Mac et je ne sais pas comment le faire.Où puis-je utiliser les appels BackTrace sur le Mac

Je trouve une question sur stackoverflow qui détaille son utilisation: getting the current stack trace on mac os x

Cependant, mon problème est que je ne vois pas où le code est censé vivre?

  1. Est-ce que ça va dans le main.cpp? Est-ce qu'il vit dans la zone de capture d'un bloc catch ?

Je pourrais faire avec quelques exemples de code complet, mais j'ai du mal à les trouver.

Répondre

1

Le code mentionné dans l'autre question doit aller là où il sera exécuté après le crash. En fonction de ce qui se passe, il peut s'agir d'un bloc catch si une exception est levée ou d'un gestionnaire de signal si le programme plante suite, par exemple, à une erreur seg ou à une erreur de bus.

Voici un exemple de capture de signaux. Cela irait dans 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

Son sur une erreur de bus alors que l'application est inactive. Alors, quelqu'un peut-il donner un exemple d'ajout au gestionnaire de signal? –

Questions connexes