17 Stimmen

Fügen Sie einen Eintrag zur Liste hinzu, während Sie in Visual Studio debuggen

Ich habe eine Stelle in meinem Code, an der ich einen Haltepunkt hinzugefügt habe. Was ich gerne tun würde, wenn der Debugger am Haltepunkt anhält, ist den Inhalt einer Liste zu ändern (speziell in diesem Fall möchte ich Einträge hinzufügen). Wie kann ich den Inhalt einer Liste während des Debuggens ändern?

Bearbeiten: Die Liste ist eine Liste von Strings.

28voto

Matt Greer Punkte 58978

Verwenden Sie das direkte Fenster (Standardmäßig STRG+D, I mit C#-Tastenzuweisungen oder im Menü Debug > Fenster).

Von dort aus rufen Sie einfach myList.Add(foo) auf. Es wird zurückkommen und sagen, dass der Ausdruck ausgewertet wurde und keinen Wert hat, aber der Nebeneffekt das Hinzufügen von foo ist.

3voto

digEmAll Punkte 54672

Auch im Watch-Fenster können Sie Einzelzeilen-Anweisungen (oder besser einen Ausdruck) ausführen.

Schreiben Sie einfach etwas wie:

myList.Add("myNewValue")

und drücken Sie ENTER Es sollte funktionieren (hat zumindest immer für mich funktioniert)

2voto

JMarsch Punkte 21084

Es gibt eine Technik, die Sie verwenden können, um Code innerhalb eines Haltepunkts einzufügen. Es ist einfach und funktioniert.

  1. Setze einen Haltepunkt
  2. Klicke mit der rechten Maustaste auf den Haltepunkt und wähle "Bedingungen"
  3. Gib deine Codezeile in die Bedingung ein (es muss kein bool zurückgegeben werden)
  4. Führe das Programm aus

Wenn Ihr Haltepunkt erreicht wird, wird der Code ausgeführt, und der Debugger wird NICHT am Haltepunkt anhalten (weil Sie kein Bool zurückgegeben haben).

Ich habe diesen Tipp vom Visual Studio Tips Blog erhalten: http://blogs.msdn.com/b/zainnab/archive/2010/05/04/set-a-complex-breakpoint-condition-vstipdebug0022.aspx

Hier ist ein Beispielprogramm, das die Technik veranschaulicht:

        static void Main(string[] args)
        {
            List l = new List();
            Console.WriteLine(l[0]);
            System.Console.ReadLine();
        }

Wenn Sie diesen Code wie er ist ausführen, erhalten Sie eine Ausnahme. Bevor Sie ihn jedoch ausführen, fügen Sie eine Haltepunktzeile zu Console.WriteLine() hinzu.

Klicken Sie mit der rechten Maustaste auf den Haltepunkt und wählen Sie "Bedingungen" Fügen Sie im Bedingungsfenster den folgenden Code hinzu:

l.Add("Hallo")

Jetzt führen Sie das Programm aus.

Sicherlich kann eine Person mit diesem "Feature" in große Schwierigkeiten geraten -- Sie können das Verhalten Ihrer Anwendung mit Haltepunkten ändern, sodass ein unabhängiger Build des Codes sich anders verhält als wenn er auf Ihrem Computer in Ihrem Debugger ausgeführt wird. Seien Sie also sehr vorsichtig...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X