xcode 3.2.2 und objective-c 2.0 und debug: wo sind die Eigenschafts- / Instanzvariablenwerte meines Objekts im Debug?

8

Arbeiten an einem Mac OS Projekt (dh nicht iPhone) erfordert 10.6 und ist 64 Bit, ermöglicht es mir, Eigenschaften zu verwenden, um beide Accessor-Methoden und Instanzvariablen in der Header-Datei zu generieren. aber während des Debugging sehe ich nicht, wie man die Eigenschaftswerte des Objekts anschaut, nachdem sie ausgefüllt wurden. Gibt es eine Build-Einstellung, die aktiviert werden muss?

Wenn ich die Instanzvariablen eines Objekts deklariere (zwischen {} in der Kopfzeile), dann kann ich diese Werte (wenn sie benutzt werden) während des Debugs entweder im Debug-Fenster selbst sehen, oder indem ich den Cursor-Mauszeiger über den Mauszeiger halte markierter Linientrick im Editor während einer Pause, oder indem man cli in gdb wie zum Beispiel 'p * object' ausführt.

alter Weg:

%Vor%

neuer Weg:

%Vor%

In dieser neuen 10.6 erforderlichen 64-Bit-Idee (die mir einfacher erscheint) zeigt keine dieser Debug-Methoden die Werte des Objekts an. Ich denke, ich muss etwas ausgeschaltet haben, denn diese neuere Idee scheint nicht besser.

gdb Ergebnisse für alten Weg:

%Vor%

gdb Ergebnisse für neuen Weg:

%Vor%

Also schauen Sie sich die Dokumente für objective-c 2.0 an:

Ссылка

beschreibt, worauf ich Bezug nehme (die Synthese von Instanzvariablen in der 'modernen' Laufzeit), aber was nirgendwo anders gesagt wird, ist, dass die Werte während des Debuggens nicht verfügbar sind.

Ich habe eine Seite SO mit relevanten Informationen gefunden, die jedoch nicht auf diesen Effekt ausgerichtet ist: Verwenden von Instanzvariablen mit der Modern Runtime

Was habe ich vermisst?

    
lulu 03.06.2010, 23:01
quelle

3 Antworten

2

In GDB können Sie mithilfe von Eigenschaftengettern auf dynamische Ivars zugreifen:

%Vor%     
outis 19.11.2010, 03:09
quelle
2

Ich nehme an, dass Sie @synthesizing diese Variablen sind?

Sie benötigen möglicherweise auch { } in der Schnittstelle, damit der Compiler weiß, wohin er ihn setzen soll.

%Vor%

Ich würde diese Art von Syntax vermeiden ... vor allem, wenn Sie die Eigenschaften selbst definieren.

Sehen Sie sich auch <objc/runtime.h> an und prüfen Sie, ob Sie eine Liste von Ivars für die Klasse drucken können. Ich benutze immer die folgende Zeit für das Debuggen von Methoden oder Klassen von APIs, die keine Dokumentation haben.

%Vor%     
Stephen Furlani 10.06.2010 11:45
quelle
2

Ich hatte das gleiche Problem mit synthetisierten Ivars. Meine Lösung war, in XCode 3.25 zum LLVM 1.6 Compiler zu wechseln. Dies brachte Debugger Tooltips (am hilfreichsten für mich), aber das Variablenfenster zeigt immer noch nicht die Ivars.

    
cjcaufield 24.01.2011 20:25
quelle

Tags und Links