306 votes

Comment imprimer une trace de pile pour le journal de console/en cacao ?

Je tiens à ouvrir une session le Dépisteur au cours de certains points, comme les assertions de l’échecs, ou à des exceptions non interceptées.

564voto

smokris Points 6412
<pre><code></code><p>Ce code fonctionne sur n’importe quel thread.</p></pre>

35voto

Zayin Krige Points 1029

réponse de n13 ne fonctionne pas tout à fait - j’ai modifié légèrement pour arriver à cela

9voto

vt. Points 727

Cacao déjà les journaux de la trace de la pile sur les exceptions à la console même si ils sont juste des premières adresses de la mémoire. Si vous voulez de l'information symbolique dans la console, il y a quelques exemples de code à partir d'Apple.

Si vous souhaitez générer une trace de la pile à un point arbitraire dans votre code (et vous êtes sur de Léopard), voir la trace de l'homme page. Avant de Léopard, il fallait creuser par le biais de la pile d'appel lui-même.

6voto

Max Stewart Points 2875

Ce joli beaucoup vous dit quoi faire.

Essentiellement, vous devez configurer la gestion des exceptions des applications pour ouvrir une session, quelque chose comme :

3voto

n13 Points 1506

J'ai trouvé que c'était exactement ce dont j'avais besoin: Met de l'émotion dans la main.classe m et imprime la trace de la pile. Je ne suis pas sûr qu'il fonctionne dans toutes les situations, par exemple, pas sûr que cela fonctionne quand il y a un C niveau de crash. Mais, mieux que rien, et facile à installer.

http://blog.evergizmo.com/2012/01/17/objective-c-tip-how-to-print-stack-trace/

Dans le cas où le lien s'en va, - mettre cela en main.m:

int main(int argc, char *argv[])
{
    @autoreleasepool {
        int retval;
        @try{
            retval = UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class]));
        }
        @catch (NSException *exception)
        {
            NSLog(@"Gosh!!! %@", [exception callStackSymbols]);
            @throw;
        }
        return retval;
    }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X