2009-09-02 4 views
6

Das Thema sagt alles wirklich ... Gibt es irgendwo ein gutes Tutorial für Xcode's Debugger da draußen? Ich finde dribs und drabs von Sachen, aber nichts umfassendes oder das geht tief genug. Mein Problem ist im Moment, dass dies ...Wo gibt es ein gutes Tutorial, wie man den Debugger von Xcode richtig benutzt?

#0 0x90d9c688 in objc_msgSend 
#1 0x30506515 in NSPopAutoreleasePool 
#2 0x30901697 in _UIApplicationHandleEvent 
#3 0x32046375 in PurpleEventCallback 
#4 0x30245560 in CFRunLoopRunSpecific 
#5 0x30244628 in CFRunLoopRunInMode 
#6 0x308f930d in -[UIApplication _run] 
#7 0x309021ee in UIApplicationMain 
#8 0x00001ff8 in main at main.m:14 

... mit diesem kombiniert ...

0x90d9c688 <+0024> mov 0x20(%edx),%edi 

... und ...

EXC_BAD_ACCESS 

.. .hilft nicht viel. Oder überhaupt, wirklich. Ich möchte Codezeilen kommentieren und es muss einen besseren Weg geben.

Dank

UPDATE: ich vielleicht war von der eigentlichen Frage ein bisschen eine Ablenkung meine Entlüftung erraten, obwohl die Spitzen ein wenig erklären Dinge geholfen haben. Worauf ich wirklich hinaus will, ist nicht nur eine Erklärung für das oben Genannte, sondern nur die allgemeine Verwendung des Debuggers. Die Fragen, die ich normalerweise habe, sind:

  • Warum geht der Debugger manchmal von der Quellcodeansicht zu (was ich annehme) Assemblercode, wenn ich über oder in gehe? Gibt es eine Möglichkeit für mich, beide gleichzeitig zu sehen?
  • Gibt es etwas Bestimmtes, das ich im Assemblercode suchen sollte, oder irgendetwas, das in einer bestimmten Situation helfen könnte?
  • Es sieht so aus, als ob Breakpoints Aktionen zulassen, also bin ich neugierig, wie das genutzt werden könnte, anstatt meinen Code mit NSLog-Anweisungen zu überziehen.
  • Ich weiß, dass diese breit sind, und wahrscheinlich sollten einzeln gefragt werden, aber ich wollte den SO-Raum mit diesen Themen, die bereits anderweitig dokumentiert sein könnten, nicht durcheinander bringen.

    Ich bemerkte auch ein hier gefragt fast doppelte Frage: What are some Objective-c debugging tips?

    +0

    Ich weiß, das ist eine alte Frage. Aber für jeden, der darüber stolpert, fand ich dieses Ray Wenderlich Tutorial (http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1) absolut hervorragend. –

    Antwort

    2

    Der Absturz ist innerhalb Apples Code (das ist, warum Debugger Ihnen nicht zeigen die Quelle) und Ursache ist eigentlich woanders - man‘ Ich habe ein temporäres Objekt veröffentlicht, das vom Autorelease-Pool freigegeben werden sollte. Dies führte zum Absturz des Pools für die automatische Freigabe.

    Sie sollen nur Objekte freizugeben, die:

    • Sie sich mit beibehalten haben retain
    • zurückgegeben wurden von init, copy und new Methoden nur (und deren Varianten enthalten diese Worte)

    Leider kann man das vom Debugger nicht lernen, nur aus Dokumentation und Erfahrung ...

    Sie können Clang Analyzer verwenden, um solche Fehler (manchmal) zu finden.

    +0

    Wenn ich beide Antworten als die akzeptierten überprüfen könnte, würde ich, trotz der Tatsache, dass sie die Frage nicht so beantwortet haben, wie ich gehofft habe. Nicht das ist am Ende wirklich wichtig. Also gehe ich mit demjenigen, der mich zuerst zu der Ursache des Absturzes geführt hat, obwohl ich denke, dass ich die Regeln der Speicherverwaltung erneut durchgehen muss, um zu verstehen, warum ich den Absturz erhalte. Danke an beide! –

    2

    Hier ist eine great tutorial auf die Features des Debuggers für XCode 4.

    In Bezug auf Ihre Frage fo r, warum der Debugger von der Quellcodeansicht zur Assemblyansicht wechselt ... Es wird in die Assemblyansicht gewechselt, wenn die Ausführung von Code in Klassen geht, die nicht Teil Ihrer Quellcodedateien sind ... z. Wenn Sie in Code einsteigen, der Teil von Frameworks ist, die Sie verwenden, z. B. UIKit.

    Verwandte Themen