2016-07-03 2 views
1

Wie kann ich das Ergebnis einer Bedingung im Visual Studio während des Debuggens anzeigen lassen? Nehmen wir an, mein Code sieht so aus:Wie zeigt man das Ergebnis der Bedingung in Visual Studio-Debugging?

If a > b andalso c > b andalso d < y then 

Wenn ich durchtrete, kann ich nicht sehen, welche der drei Bedingungen falsch sind. Gibt es einen Weg dazu?

+0

Wie wäre es, die Werte von a, b, c kopieren, ... auf "Watch" -Fenster. Verwenden Sie Ziehen und Ablegen. –

+0

Dies könnte in diesem Fall funktionieren, aber wenn Sie komplexere Bedingungen haben, die Arrays oder Aufruffunktionen verwenden, wird es schwierig und zeitraubend zu verstehen, welche dieser Bedingungen fehlgeschlagen sind. Ich habe gehofft, dass es einen Tooltip oder ähnliches geben würde, der mir das Ergebnis jeder Bedingung zeigt. – John

+0

Deshalb schreiben wir den Code immer so einfach wie möglich, damit jeder den Code ohne Probleme lesen kann. Und immer schnellen und schmutzigen Code vermeiden. –

Antwort

0

Wenn Sie einen Code in away schreiben möchten, der das beste zum Debuggen ist, wird es eine schreckliche Art der Codierung, z. der beste Weg, die oben für das Debuggen wie folgt zu umschreiben:

bool isValid = false; 

isValid = isValid && a > b 
isValid = isValid && c > b 
isValid = isValid && d < y 

Es sei denn es eine gewisse Logik in Ihrem Programm ist auf diese Weise zu finden, die ... versagt Teil Unsinn, es einfach besser, wenn Sie jeden Teil hinzufügen zur Überprüfung und Validierung, ist das Debugging insgesamt nicht der Zweck des Code-Schreibens.

+0

Sie würden besser tun: 'bool condOne = a> b; bool condTwo = c> b; bool condThree = d

+0

@CodyGray Sie sind richtig, aber alle führen zu dem gleichen Ergebnis ... schlechter Code;) –

1

Sie die debugconsole verwenden könnte, die Ergebnisse wie folgt zu schreiben:

bool ab = a > b; 
bool cb = c > b; 
bool dy = d < y; 

System.Diagnostics.Debug.WriteLine("a > b = " + ab + ", "c > b = " cb + ", d < y = " + dy"); 
if (ab && cd && dy) 
{ 
    //Your code here 
} 

Die 3 Ergebnisse werden auf dem debugconsole wie ein = true, c b>

gezeigt> b = false, d < y = true

Optional Sie eine vierte boolean wie

könnte hinzufügen
bool result = ab && cd && dy; 

und drucken Sie es auch auf der Konsole.

0

Sie können das unmittelbare Fenster verwenden und einzelne Bedingungen kopieren oder irgendetwas anderes, das Sie mögen. Auf diese Weise müssen Sie Ihren Code nicht ändern.

+0

Ihr Punkt darüber, dass Sie den Code nicht ändern müssen, ist sehr wichtig. Debugging sollte das Programm selbst nicht stören. Die Immediate- und Watch-Fenster sind sehr ähnlich. Ein Vorteil des Überwachungsfensters besteht darin, dass die Ausdrücke dort bei jedem Abbruch der Ausführung automatisch aktualisiert werden. –

0

Wenn ich ein Problem mit dem Code hatte, würde ich es so umschreiben, dass es klar und einfach zu debuggen war.

Dim aGTb As Boolean = a > b 
    Dim cGTb As Boolean = c > b 
    Dim dLTy As Boolean = d < y 

    If aGTb AndAlso cGTb AndAlso dLTy Then 

    End If 
0

können Sie System.Diagnostics
und verwenden Debugger.Break() verwenden Debugger an dieser Linie zu stoppen und die Ausgabe des Debuggers,
Gefallen Sie diesen Beispielcode siehe:

in C#:

using System; 
using System.Diagnostics; 

class Test 
{ 
    static volatile int a = a, b = 2, c = 3, d = 4, y = 5; 
    static void Main(string[] args) 
    { 
     Debugger.Break(); 
     Debug.WriteLine("a > b:{0}", a > b); 
     Debug.WriteLine("c > b:{0}", c > b); 
     Debug.WriteLine("d < y:{0}", d < y); 
     Debug.WriteLine("a > b && c > b && d < y:{0}", a > b && c > b && d < y); 
     if (a > b && c > b && d < y) 
     { 
      Console.WriteLine("..."); 
     } 
    } 
} 

oder in VB:

Imports System 
Imports System.Diagnostics 

Module Module1 

    Sub Main() 

     Dim a As Integer = 1, b As Integer = 2, c As Integer = 3, d As Integer = 4, y As Integer = 5 

     Debugger.Break() 
     Debug.WriteLine("a > b:{0}", a > b) 
     Debug.WriteLine("c > b:{0}", c > b) 
     Debug.WriteLine("d < y:{0}", d < y) 
     Debug.WriteLine("a > b && c > b && d < y:{0}", a > b AndAlso c > b AndAlso d < y) 
     If a > b AndAlso c > b AndAlso d < y Then 
      Console.WriteLine("...") 
     End If 
    End Sub 

End Module 

ich hoffe, das hilft. Diese

0

Versuchen:

if(a>b) 
{ 
    if(c>b) 
    { 
     if(d<y) 
     { 
      /* Your code here */ 
     } 
    } 
} 
+0

Während dieses Code-Snippet die Frage lösen kann, [hilft eine Erklärung] (http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers) wirklich, um die Qualität Ihres Beitrags zu verbessern. Denken Sie daran, dass Sie die Frage für Leser in der Zukunft beantworten, und diese Leute könnten die Gründe für Ihren Codevorschlag nicht kennen. – lokusking

Verwandte Themen