2016-03-21 3 views
1

Ich möchte jedes Objekt (das mindestens eine Referenz hat) in einem Programm zu überprüfen, und ich möchte es zu jeder Zeit die Ausführung des Programms angehalten werden (über Breakpoint, zum Beispiel).Gesamte Programm Überwachung über Debugger

Wenn ich eine Variable (Objekt) zur Watch of Parallel-Uhr hinzufüge, kann ich sie nicht untersuchen, es sei denn, ein Teil des Programms wird im selben Bereich wie die Variable ausgeführt.

Wie überprüfe ich eine Variable (Objekt) in jedem beliebigen Bereich, global?

Wie kann ich eine Variable vom Anfang des Programms (oder von der ersten Definition) bis zum Ende der Ausführung verfolgen?

In dem Projekt, an dem ich arbeite, hat jedes Objekt einen direkten oder indirekten Verweis vom obersten Objekt, einem Formular. Wenn ich es jederzeit untersuchen könnte, hätte ich Zugriff auf jedes andere Objekt in meinem Programm.

Wie mache ich das? Es muss einen (einfachen) Weg geben, es würde als ein riesiges Versehen erscheinen, den Programmierer nicht in die Lage zu versetzen, sein gesamtes Programm zu jeder Zeit zu analysieren (wenn die Ausführung pausiert ist).

[Leider die Frage zu verdoppeln, ich habe die alte gelöscht, ich hoffe, das ein klarer ist.]

+0

Haben Sie ein konkreteres Beispiel für ein Objekt, das Sie untersuchen möchten? Es klingt so, als ob man Dinge inspizieren möchte, die derzeit nicht in Reichweite sind, was eigentlich keinen Sinn ergibt. (Zum Beispiel eine Variable innerhalb einer Funktion, die gerade nicht ausgeführt wird.) – David

+0

Ich habe ein seltsames Problem und es hängt mit einer Art von Referenzproblemen zusammen. Ich habe ein Objekt, das von einer Reihe anderer Objekte referenziert wird (oder zumindest sollte es sein). Anstatt den Code zu analysieren, der Stunden dauern könnte (und was ich bereits getan habe und gescheitert ist) Es wäre so einfach, das Programm einfach auszuführen, alle Variablen aufzulisten, an denen ich interessiert bin, und zu sehen, welches das Problem ist ist sogar ein Problem. Ich bin sehr überrascht, dass Sie dies nicht per Knopfdruck tun können, es scheint eine ziemlich mächtige und in einigen Fällen essenzielle Debombing-Option zu sein. – Karlovsky120

+0

'" liste alle Variablen auf, die mich interessieren "' - Und wie soll die IDE wissen, welche Variablen diese Kriterien erfüllen? Ich bin überhaupt nicht überrascht, dass dieses Feature nicht existiert. – David

Antwort

4

Wenn sich die Variable im Bereich befindet, klicken Sie mit der rechten Maustaste auf die Variable, die Sie verfolgen möchten, und wählen Sie "Objekt-ID erstellen". Sie können dann den Wert des Objekts, auf das die Variable verweist, auch dann sehen, wenn Sie sich in einem anderen Bereich befinden. Weitere Informationen finden Sie unter this blog post.

+0

Nun, würdest du dir das ansehen? Es gibt einen einfachen Weg. Vielen Dank, du warst eine große Hilfe. =) – Karlovsky120

-1

Es gibt ein Fenster Locals die Sie zugreifen können, dass über alle zur Zeit im Programm aufgerufen ist instanziert Attribute. Sie können es beim Debuggen über das Menü Debug-> Windows-> Locals öffnen.

+1

Locals werden Variablen nicht außerhalb des Bereichs verfolgen, was er möchte. – Jacobr365

+1

In diesem Fall denke ich, dass die einzige Möglichkeit darin besteht, das Debugging auf Adress-Ebene zu aktivieren und den Speicher direkt zu verfolgen, aber das ist nicht sehr einfach. Sie können auch Objekt-IDs erstellen, aber das funktioniert nur für deklarierte Variablen, und Sie müssten jede ID selbst erstellen. –

+0

Ich kann nicht glauben, dass es keine einfache Möglichkeit gibt, eine einzelne Variable im gesamten Programm oder zumindest von der Initialisierung der Variablen zu verfolgen. – Karlovsky120