2

Für eine Demonstration, werfen Sie einen Blick auf die following section of this video.Ziehen Sie den Anweisungszeiger beim Debuggen in Visual Studio zurück

Grundsätzlich, ich weiß, dies ist möglich in Visual Studio Community Edition 2015. Ich habe mich gefragt:

a) Ist das zu IntelliTrace verwendet und "Historische Debuggen"? b) Wird es irgendwelche Nebenwirkungen geben, wenn ich das tue? Oder verschiebt das einfach die Anweisungen zurück und das war's?

+0

Es bewegt einfach den Anweisungszeiger. Es kann durchaus zu Nebenwirkungen kommen. Sie könnten den erforderlichen Code, der in Ihrer Quelle nicht sichtbar ist, versehentlich überspringen. Ein gutes Beispiel ist [hier verfügbar] (http://stackoverflow.com/questions/28896531/clr-system-nullreferenceexception-when-forcing-set-next-statement-into-if-bl). –

Antwort

2

Es bewegt nur den Befehlszeiger zurück und das ist es, um Ihre eigenen Worte zu verwenden. Diese

bedeutet:

  • Irgendwelche Nebenwirkungen bereits entstanden zwischen wo Sie es ziehen und wo Sie schleppten sie aus bereits entstandenen und nicht umgekehrt werden.
  • Alle Variablen im gleichen Abschnitt von Anweisungen geändert werden noch geändert werden, werden sie unabhängig Werte nicht umgekehrt sie an dem Punkt hatte man Sie den Befehlszeiger ziehen, um

So können Sie diese Debugging-Hilfe verwenden, um entweder erzwinge das Programm einen Pfad, den es nicht hat (z. B. durch Ziehen des Befehlszeigers in eine if-Anweisung, die es übersprungen hat), um zu überspringen (indem der Befehlszeiger an Code gezogen wird, den man nicht ausführen möchte) oder einen Code erneut ausführen.

Aber Sie müssen müssen beachten Sie die oben genannten Einschränkungen. Wenn der Code nicht sicher ist, erneut ausgeführt zu werden, hilft Ihnen das wahrscheinlich nicht beim Debuggen.

+0

Danke! Ist das eine empfohlene Praxis? Ich konnte nichts über diese Funktionalität herausfinden, auch nicht, wann und wann nicht. – anemaria20

+1

"empfohlene Praxis" klingt wie etwas, ich würde Ihnen empfehlen, die ganze Zeit zu tun, und das ist nicht eine dieser Funktionen. Sie sollten jedoch unbedingt lernen, wie Sie diese Funktion verwenden, was sie tun kann und was nicht, da Sie manchmal keine andere Option haben, als einen Code erneut auszuführen oder zu überspringen. Wenn es z. B. 2-3 Minuten dauern würde, das gesamte Programm erneut auszuführen, um zu dem Punkt zurückzukehren, an dem der Breakpoint getroffen wurde, und Sie einen Schritt zu weit gehen, bevor Sie den Code "betreten", würde ich es einfach tun Ziehe den Zeiger nach oben und drücke F11, um in irgendwas zu treten. –

+0

Danke! Wie wäre es, es vorwärts zu bringen? Ich habe gesehen, dass das auch möglich ist. Wenn es genauso vorwärts wie rückwärts funktioniert, kann ich mir vorstellen, dass dies wie eine Goto-Aussage ist. – anemaria20

0

Es ist schon lange machbar. Alles, was mit dem Punkt passiert ist, von dem aus Sie den Mauszeiger ziehen, ist bereits geschehen, also werden Sie das Bit im Grunde wiederholen.

Es gibt keine wirklichen Konsequenzen, es sei denn, Sie verarbeiten etwas oder speichern in der Datenbank usw., da das Schreiben der gleichen vorhandenen Daten eine Ausnahme oder Verwirrung bei der Verarbeitung einiger Daten auslösen kann.

Alle Variablen, die gesetzt wurden (auch wenn Sie den Cursor höher ziehen als sie initialisieren), behalten den Wert, den sie von der Stelle hatten, an der Sie den Cursor nach oben gezogen haben.