2012-10-13 8 views
10

Ich möchte die aktuelle Methode, die ich durchtrete, beenden."Rückkehr" von der Methode beim Schritt?

-(void)helloWorld { 
    NSLog(@"Hello"); 
    // I would like to return here, so that "World" isn't printed. 
    NSLog(@"World"); 
} 

Ich habe folgendes versucht, aber ohne Glück.

(lldb) expr return 
<no result> 

Ist dies mit lldb möglich?

Antwort

6

Wenn Sie mit Xcode debuggen und Ihr Programm an einem Haltepunkt pausiert, können Sie den kleinen grünen Pfeil auf eine beliebige andere Zeile in der Funktion ziehen. Z.B. in dem folgenden Code:

Xcode breakpoint

wenn ich die NSLog(@"B") überspringen will, kann ich ziehen Sie einfach den grünen Pfeil von der Linie 20 23 an der Leitung, die die Funktion bedeutet einfach „Rückkehr“ von überall ich will.

+1

Ich habe mehrere Personen gesehen, dass unter LLDB und ARC, ziehen den PC an einen neuen Ort kann zu Abstürzen führen. Es gibt noch einige Knicke, die es zu lösen gilt. Wenn du dich mit GDB, aber nicht mit LLDB auskennst, dann speichere eine Kopie dieses Spickzettel: http://lldb.llvm.org/lldb-gdb.html –

+0

Ja, im Allgemeinen ist das Herumziehen des PCs sehr riskant, außer du Verstehen Sie die gesamte Laufzeit/Speicherzuweisung/Initialisierung, die hinter den Kulissen stattfindet. Wenn Sie eine Reihe von einfachen Aussagen haben, können Sie oft damit durchkommen, aber alles anspruchsvollere und es ist voller versteckter Probleme. –

17

Leider gibt es in Xcode 4.5.x keine Möglichkeit, eine vorzeitige Rückkehr von einer Funktion zu erzwingen. In den aktuellen lldb-Quellen über http://lldb.llvm.org/ gibt es einen neu hinzugefügten Befehl, thread return, der tut, was Sie wollen - es enthält die Möglichkeit, den Rückgabewert der Funktion anzugeben. Dies wird jedoch erst in der nächsten Hauptversion in Xcode sein.

+7

In Xcode 6 funktioniert 'thread return' out of the box – fabb

Verwandte Themen