Dieser Artikel wurde maschinell übersetzt.

IntelliTrace

Debuggen von Anwendungen mit IntelliTrace

Justin Marks

Downloaden des Codebeispiels

Wie ist jede Person in Ihrem Code einen Bug behoben? Einige Haltepunkte festlegen, das Programm im Debugger auszuführen, führen Sie ein wenig Einzelschrittausführung – und pray, liegt das Problem in Ihren Schoß, so dass Sie andere Dinge zugreifen können.

Haben wir bereits den gleichen Stil der Debuggen fast, da die ENIAC erfunden wurde. Dieser mühsam und zeitaufwendig Debuggen Ansatz hat uns gut bedient, ist es Zeit Debuggen einfacher erhielt. Mit der Veröffentlichung von Visual Studio 2010 Ultimate bringt neue IntelliTrace-Funktion in der 21. Jahrhundert annehmen bezeichneter Entwickler einen besseren Einblick in Ihre Anwendungen Ausführung Debuggen.

Viel sammelt wie andere Überwachung und Ablaufverfolgung Tools wie z. B. Process Monitor von Windows Sysinternals, Visual Studio 2010 über eine Anwendung während dieser ausgeführt wird, damit Entwickler, die Fehler zu diagnostizieren. Die gesammelten Daten werden als IntelliTrace Ereignisse bezeichnet. Diese Ereignisse werden als Teil der standardmäßigen Debuggen Erfahrung gesammelt und unter anderem können Sie Entwickler Schritt zurück in die Zeit, um festzustellen, was in einer Anwendung passiert ist, ohne den Debugger neu starten zu müssen.

In diesem Artikel werde ich eine Einführung in die IntelliTrace und anzeigen, wie es Wert für Entwickler, die als Teil Ihrer täglichen Entwicklungsaktivitäten bereitstellt. Ich werde zeigen, wie IntelliTrace eine zeitliche Ereignisse bereitstellt, die während der Ausführung einer Anwendung aufgetreten sind und wie Entwickler diese Ereignisse verwenden können, um Debuggen zu unterstützen. Als Nächstes werden die Einstellungen erläutert Entwicklern ändern können, um eine stärkere Gruppe von Informationen zur Anwendung erhalten Sie einen vollständigen Ausführungsverlauf sammeln. Zum Schluss werde ich zeigen, wie Sie eine zuvor aufgezeichnete Datei IntelliTrace verwenden, die von einer anderen Person erstellt wurde – ein Tester, um eine Anwendung zu debuggen, ohne zum Ausführen der Anwendung, den Fehler zu reproduzieren.

Beim Starten von Visual Studio-Diagnose-Team für Visual Studio 2010 Planung aufgewendet wir viel Zeit, die Kommunikation mit Kunden dazu, wie Sie Probleme in Ihren Anwendungen zu diagnostizieren. Obwohl jeder ein anderes Muster und bevorzugte Sammlung von Tools hat, wurde ein Punkt überwältigend deaktivieren: Die traditionellen Methoden der Diagnose von Problemen bei der Anwendungen sind schwierig, zeitaufwendig und kostspielig. Die Fehlerberichte, die fast nie Entwickler erhalten haben alle Schritte zum Reproduzieren des Problems und hauptsächlich bestehen aus Anweisungen, wie “ wurde dem Verwenden von des Programms, und es ist abgestürzt. ” In dem seltenen Fall, wenn gute reproduzieren Schritte verfügbar sind, können Sie mit Fehlern, die in bestimmten Umgebungen auftreten konfrontiert werden und dies zu einem ganz neuen Satz von Problemen führt lösen. Darüber hinaus werden häufig Fehler verursacht, durch die von der Funktionsweise von einem Framework oder anderen Code falsch verstanden.

Mit dieser Schwierigkeiten Punkte beachten, legen wir Informationen über ein neues Debuggerfeature erstellen, in denen die richtige Informationen zu dem Zeitpunkt erfasst wurde das Problem aufgetreten ist. Unser Ziel wurde zur hand Entwickler, die genaue reproduzieren Schritte und die Umgebung von Systemeinstellungen, ebenso wie offen legen das Verhalten des Frameworks und Code, die Sie, verwenden um Ihre Diagnosability erheblich verbessern. Mit der Veröffentlichung von Visual Studio 2010 Ultimate bringt IntelliTrace eine erheblich verbesserte Debugvorgang bezeichneter Entwickler einen besseren Einblick in die Anwendung und Framework Verhalten sowie die Möglichkeit, öffnen Sie eine IntelliTrace-Datei von einem Tester gesammelten “ keine reproduzieren ” Szenarios zu beheben.

Einführung in die IntelliTrace

Wenn ein Entwickler ein tieferes Verständnis der Ausführung von Code benötigt, IntelliTrace bietet eine Möglichkeit des “ die DFÜ aktivieren ” der vollständigen Ausführungsverlauf von einer Anwendung zu sammeln.

Um dies zu verdeutlichen, werde ich die Tailspin Toys-Demo-Anwendung verwenden, die Art der Informationen angezeigt werden IntelliTrace erfasst werden kann. Zunächst werde ich die Lösung in Visual Studio zu öffnen und mit dem Debuggen beginnen. Wenn die Website gestartet wird, werde ich navigieren Sie zu der Seite “ zu uns ” und eine Fehlermeldung vom Server. Wie können Sie das Problem diagnostizieren? Wenn Sie etwas wie ich sind, ist Ihre erste instinktiv so konfigurieren Sie die Datei web.config nicht benutzerdefinierten Fehler anzeigen und dann neu starten des Debuggers. Jedoch was geschieht, wenn dieses Problem gelegentlich? Wäre es nicht schön, wenn Sie konnte nur in den Prozess zu diesem Zeitpunkt nach Trennen der Fehler ist aufgetreten, und einen Verlauf erhalten der Wo befindet sich in der Anwendung von Visual Studio?

Während des Debuggens sind, sammelt IntelliTrace zu einer verwalteten Anwendung im Hintergrund, einschließlich der Informationen aus vielen Frameworkkomponenten wie z. B. ADO.NET, ASP.NET, und System.Xml. Diese IntelliTrace-Ereignisse ermöglichen es dem Entwickler, finden Sie unter Was zuvor während der Ausführung und vor allem aufgetreten ist, “ Schritt wieder rechtzeitig ” vorherigen Status der Anwendung anzeigen, ohne den Debugger neu starten zu müssen. Wenn ich den Debugger zu unterbrechen, bin ich sofort mit einer sequenziellen Liste mit den IntelliTrace-Ereignisse angezeigt, die gesammelt wurden (siehe Abbildung 1).

image: Diagnostic Information Collected by IntelliTrace

Abbildung 1 Diagnoseinformationen erfasste von IntelliTrace

Wie Sie sehen können, von Abbildung 1, geht die Liste der Ereignisse IntelliTrace weit hinter Datei- und Registrierungsberechtigungen Zugriffe, wie in Process Monitor angezeigt werden sollen. Wir haben fast 150 IntelliTrace Ereignisse für Visual Studio 2010 definiert, und wir planen, auf diese Liste mit zusätzlichen Ereignisse über einen Zeitraum zu verbessern. Abbildung 2 werden einige der Kategorien von Ereignissen, die von IntelliTrace gesammelt werden.

Abbildung 2 IntelliTrace Ereignisse stehen für Microsoft .NET Framework

Kategorie Beschreibung und gesammelte Daten
ADO.NET Ereignisse, um die Ausführung von Abfragen in SQL, den ausgeführten Befehl als auch die Verbindungszeichenfolge.
ASP.NET Ereignisse, um die ASP.NET-Pipeline sowie die Verarbeitung von Anforderungen und die Umleitung.
Konsole Konsolenausgabe.
Datenbindung Windows Forms-Datenbindung.
Umgebungsvariablen Auswertung und das Abrufen von Umgebungsvariablen aus dem Prozess.
///File Erstellen, löschen und Zugriff auf Dateien.
Bewegungen Benutzeraktionen, die für allgemeine Steuerelemente von Web Forms, Windows Forms und WPF ausgeführt werden. Zusätzlich zum Sammeln von Daten über die Interaktion mit dem Steuerelement leitet automatisch auf eines dieser Ereignisse klicken Sie an den entsprechenden Ereignishandler.
Die verzögerte Initialisierung Initialisierung der verzögert geladenen Variablen.
Registry Erstellen, löschen und Abfragen der Registrierungsinformationen.
Service Model Web Service-Aufrufe von WCF.
Threading Der Benutzer Arbeitsaufgaben und Parallel computing Aufgaben Warteschlangen.
Ablaufverfolgung Debugger-Ablaufverfolgungsausgabe und Assertionen.
Benutzer auffordern Die Anzeige von Meldungsfeldern für Windows Forms und WPF als auch das Ergebnis des Dialogfelds.
Workflow Aktivität Instanziierung und Abschluss.
XML XML-Datei laden.

Das IntelliTrace-Fenster kann die Liste der erfassten Ereignisse nach Kategorie filtern, die Kategorien angezeigt, die in Abbildung 2 – oder vom Thread. Darüber hinaus kann ich textbasierte Suchvorgänge nach wichtige Ereignisse, denen ich schnell zu springen können. Da IntelliTrace auch Ausnahmen erfasst, kann ich eine Suche nach dem Begriff “ Ausnahme ” und Filtern der Liste anzuzeigenden mir die Ausnahme, die die ASP.NET-Seite Fehler verursacht hat, wo er ausgelöst wurde und wo es abgefangen wurde. In diesem Fall wurde der Fehler durch eine XMLException beim Analysieren einer Entität auf Zeile 10 verursacht, positionieren Sie 53 (siehe Abbildung 3). Beim Klicken auf das Ereignis ausgelösten Ausnahme auf Anzeigen andere Debuggerfenster, z. B. die Fenster Aufrufliste und Überwachen von Daten relativ zu das Ereignis selbst, daher ist es, wie Sie das sofortige Debuggen wurden, das Ausnahme ausgelöst wurde. Darüber hinaus genau wie eine Aufrufliste nach oben durchlaufen, der Editor öffnen die entsprechenden Quelldatei und markieren Sie die Codezeile, die das Ereignis in Orange um IntelliTrace darzustellen.

image: An XMLException Was Thrown While Parsing an Entity on Line 10, Position 53

Abbildung 3 Eine XMLException ausgelöst wurde, während der Analyse einer Entität auf Zeile 10, Position 53

IntelliTrace hat mir eine sehr nützliche Information für die Diagnose des Problems zur Verfügung: eine XML-Datei geladen wurde und ein bestimmtes Zeichen in der XML-Datei war unerwartet oder fehlerhaft. Ich noch wissen jedoch nicht auf die Datei zugegriffen wurde. IntelliTrace wurde erneut, die ich benötige Informationen gesammelt, nämlich den Dateizugriff.

Betrachten der IntelliTrace-Fensters im Abbildung 3, Kann ich feststellen, dass das Ereignis nur vor, um die Ausnahme ein XML-Datei laden-Ereignis für “ Content\Xml\Ads.xml. ” ist Dies muss die Datei, die den Fehler verursacht werden. Ich kann diese Datei problemlos in Visual Studio zu öffnen. Zeile 10, betrachten 53, positionieren ich sehen, dass tatsächlich ein Fehler in dieser Datei, d. h., die “ & b = 1 ” ist ungültig für das NavigateUrl XML-Element. Entfernen Sie die folgenden ungültigen Zeichen, sollte die Website nun korrekt geladen.

Jetzt möchte ich Sie so die letzte nicht behandelte Ausnahme, dass Sie mit herkömmlichen Debugtechniken gedebuggt. Wenn Sie eine Ausnahme wie diesem war, würden Sie gesehen haben, in die Ausnahme aufgetreten ist, jedoch definitiv nicht den genauen Grund oder ungültige Zeichen. Dies ist der Schlüssel zum IntelliTrace – bietet Ihnen eine bessere Informationen zur Problemdiagnose schneller und einfacher. Sie haben die wichtigeren Dinge dazu als Verschwendung Ihrer Zeit Schutz vor um weitere Informationen.

Verwenden IntelliTrace auf verfolgen Debugger-Ereignisse

Ich habe soeben gezeigten Sie wie IntelliTrace Ausnahmen erfasst, beide behandelt und nicht behandelt, die auftreten, während einer Anwendung ausführen, und wie IntelliTrace Ereignisse über das Framework einen Einblick in was hinter den Kulissen eine Anwendung haben bereitstellen können. Aber das ist nicht alles. IntelliTrace sammelt auch Ereignisse, die vom Debugger, nämlich Haltepunkte, Ablaufverfolgungspunkte und stepping Ereignisse ausgelöst.

Eine der am häufigsten verwendeten Debugtechniken besteht darin, einen Haltepunkt in der Nähe der Stelle, wo Sie der Meinung sind, dass ein Problem vorliegt, und Schritt durch den Code ansehen von Variablen ändern. Dies ist besonders beim Debuggen durch Schleifen, Überwachen für eine Variable, die auf einen bestimmten Wert zu ändern. Leider sind die meisten Entwickler ungeduldig sind und die F10 Pfund Schlüssel zu Schritt schnell über den Code und feststellen, dass Sie zu weit geführt. Anschließend müssen Sie die Debugsitzung neu starten, und versuchen Sie es erneut. Mit IntelliTrace werden alle Haltepunkte und stepping Ereignisse zusammen mit den Kontextdaten aufgezeichnet so, dass Sie schnell auf Punkt navigieren können, bevor Sie beendet.

Wenn ich durch auf eine dieser Debugger-Ereignisse, die auf dem Prüfstand Fenster mir alle Daten angezeigt werden, die ich zuvor klicken an, sah ich ausgewertet Werte in der lokal einschließlich, überwacht und Auto-Fenster, und Schnellüberwachung sowie DataTips.

Häufig keinen zuvor entwickelten und bereitgestellten Code die erforderliche Ablaufverfolgung zum Debuggen von Problemen, die auftreten können, integriert. Haltepunkte bieten die Möglichkeit, finden Sie in der was sich hinter den Kulissen der Anwendung geht. In den meisten Fällen, muss des Entwicklers nicht am Haltepunkt angehalten sondern vielmehr er möchte, dass einige Daten sammeln und die Ausführung wird fortgesetzt. Dies trifft vor allem in Schleifen an die Stelle, an der Sie einen Datensatz der Iterator-Wert ohne bei jeder Iteration beenden möchten. In diesen Szenarien sind Ablaufverfolgungspunkte eine großartige Alternative. Ablaufverfolgungspunkte ermöglichen dem Entwickler stellen des Debuggers Ausführen einer benutzerdefinierten Aktion; d. h., ein Makro ausführen oder drucken Sie eine Ablaufverfolgungsmeldung anstelle von Ausführung zu unterbrechen. Mit IntelliTrace die Ausgabe Ablaufverfolgungspunkte wird gesammelt und in der gleichen Schnittstelle wie die anderen (siehe IntelliTrace Ereignisse angezeigt werden kannAbbildung 4).

image: Tracepoints Can Dynamically Add Trace Outputs to Code

Abbildung 4 Ablaufverfolgungspunkte kann hinzufügen am Ende der Ablaufverfolgung dynamisch zum Code

Setzen Sie das Wählen

Standardmäßig ist IntelliTrace so konfiguriert, dass um nur die IntelliTrace-Ereignisse zu sammeln. Dies ist eine Lösung mit geringem Aufwand jedoch keinen vollständigen Ausführungsverlauf von Ihrer Anwendung bereitstellen. Wenn Sie eine umfangreichere Informationen benötigen, kann IntelliTrace konfiguriert werden, um weitere Daten zu sammeln. Wie andere Debuggereinstellungen IntelliTrace kann so konfiguriert werden, dass im Dialogfeld "Optionen", aus dem Menü Extras zugegriffen werden kann (siehe Abbildung 5).

image: IntelliTrace Settings Can Be Changed from the Options Dialog

Abbildung 5 IntelliTrace Einstellungen können über das Dialogfeld "Optionen" geändert werden

Auswählen der “ IntelliTrace-Ereignisse und Anrufinformationen ” konfiguriert IntelliTrace zu sammeln, die nicht nur die IntelliTrace-Ereignisse, sondern auch Anrufinformationen an jede Methode eingeben, beenden und Callsite, z. B. Parameter und Rückgabewerte an diese Speicherorte. Leider wird das Aktivieren dieses Modus bearbeiten und Fortfahren während der Debugsitzung deaktiviert werden. Natürlich bedeutet Ihrer Wahl, um weitere Informationen zu sammeln mehr Verwaltungsaufwand für Ihre Anwendung. Wir haben sehr schwer um das Gleichgewicht zwischen nützliche Informationen und Leistung finden, aber wir Ihnen vollständige Kontrolle.

Jeder Debugsitzung erstellt eine IntelliTrace-Datei auf Datenträger, der automatisch bereinigt wird, wenn Visual Studio schließt gespeichert. Erweiterte IntelliTrace im erreicht über das Dialogfeld "Optionen" können Sie konfigurieren, in dem die Dateien, die während des Debuggens zu speichernden erstellt werden sollen und wie groß werden können. Wenn die maximale Dateigröße erreicht ist, wird ein zirkulärer Puffer verwendet, um Hilfe zu komprimieren und kürzen die Informationen in der IntelliTrace-Protokoll, und reduziert so die Ressourcenanforderungen auf dem Datenträger für die Protokolldatei gespeichert. Zwei andere Einstellungen im erweiterten Bereich können Sie den Bundsteg Navigationsbereich ausblenden und Deaktivieren von Team Foundation Server (TFS) Lookup verfügbaren Symbole.

Aufgrund der Leistungsbedenken wurde nur eine Teilmenge der definierten IntelliTrace Ereignisse für die Auflistung in der Standardeinstellung aktiviert. Einige der Ereignisse, die Sie möglicherweise aktivieren möchten, sind Konsolenausgabe, greift auf die Datei, die verzögerte Initialisierung, greift auf die Registrierung und threading Ereignisse. Sie können aktivieren oder deaktivieren eine ganze Kategorie von Ereignissen oder einzelne Ereignisse aus dem Bereich IntelliTrace Ereignisse im Dialogfeld Optionen.

Der endgültige IntelliTrace Bereich ermöglicht es Ihnen, welche Module steuern IntelliTrace Daten sammelt. Alle Module, außer denen, die von Microsoft als Bestandteil von Microsoft .NET Framework geliefert und Visual Studio standardmäßig gesammelt werden. Auf diese Weise kann große Datenmengen gesammelt werden, damit Sie diese Liste in eine Aufnahmeliste ändern und angeben, nur die Module, denen Sie interessieren, sollten Sie möglicherweise. Umgekehrt, wenn Sie einige allgemeinen Bibliotheken von Drittanbietern verwenden, möchten Sie möglicherweise ausgeschlossen werden, da Sie außerhalb des Steuerelements sind.

Einen Benutzer Code Fehler untersuchen

Nun, da ich überprüft haben, dass die Seite “ zu uns ” in der Demo-Anwendung betriebsbereit ist, let’s Stellen Sie sicher, dass unsere Warenkorb sowie arbeitet. Beim Hinzufügen von einem Flugzeug Papier in den Einkaufswagen für Einkauf angezeigt, dass tatsächlich er ordnungsgemäß zum Warenkorb hinzugefügt wurde. Wenn ich eine zweite Instanz des Artikels zum Warenkorb hinzufügen dieses Aktion wiederholen, enthält jedoch die Menge weiterhin als 1, obwohl ich erwartet habe, um 2 anzuzeigen. Soll den Debugger verwendet, um das Problem zu lösen, ohne einen Neustart, aber die Liste der Ereignisse IntelliTrace wahrscheinlich wird nicht helfen mir in diesem Szenario (in meinem Code nicht .NET Framework wurde die Arbeit erledigt). Dies ist dabei der “ IntelliTrace-Ereignisse und Anrufinformationen ” Modus der IntelliTrace kann helfen mir ein Ausführungsverlauf von meiner Anwendung anzeigen. Let’s in den Debugger springen, und sehen, welche zusätzlichen Features von IntelliTrace kann ich verwenden, um dieses Problem zu beheben.

Starten mit die Hypothese, dass meine “ Artikel zum Warenkorb hinzufügen ” Logik Probleme auftraten. Da es sich um eine Anwendung Model-View-Controller (MVC) handelt, ist kein Ereignishandler für das Klicken auf die Schaltfläche jedoch eher eine POST-Nachricht wurde gesendet und von der MVC behandelt. Diese POST-Nachricht wurde als IntelliTrace-Ereignis aufgezeichnet und, obwohl es nicht in sich selbst nützlich ist, verwende das Ereignis als Ausgangspunkt für eigene Untersuchungen. Indem dieses IntelliTrace-Ereignis kann ich springen zu dem Punkt der Debugsitzung begann, in denen die Logik “ hinzufügen ”. Ich kann diese POST-Nachrichten schnell suchen, indem Sie suchen nach das Wort “ POST ” in IntelliTrace-Fenster. Dieses Aktion wurde vom Benutzer zweimal durchgeführt, so wie erwartet, zwei werden Ergebnisse zurückgegeben von der Suche. Nachdem Sie das zweite Ereignis ausgewählt haben, wird deaktivieren das Feld "Suche" im Zusammenhang mit alle gesammelten Ereignisse (siehe Abbildung 6).

image: The IntelliTrace Events View Can Help You Start Your Investigation

Abbildung 6 Der IntelliTrace-Ereignisse kann beim Start der Untersuchung Hilfe anzeigen

Nun, ich Kontext habe auf, an denen ich in der Anwendung Zeitachse bin, möchte ich tiefer untersuchen und zu verstehen, der Methodenaufrufe, die vorgenommen wurden. Aus der Ereignisansicht kann ich zwischen den Ansichten finden Sie in die Ausführungschronik wechseln. Indem Sie auf die Verknüpfung “ wechseln zu IntelliTrace Anrufe anzeigen ” am oberen Rand des Fensters klicken, kann ich zur Ansicht aufrufen, um einen vollständigen Ausführungsverlauf von der Anwendung finden Sie unter Übergang (siehe Abbildung 7). Zu jedem Zeitpunkt kann ich die Ereignisse Zurückwechseln zur Ansicht durch Klicken auf den Link “ wechseln zu IntelliTrace Ereignisansicht ”.

image: The IntelliTrace Calls View Shows the Execution History of the Application

Abbildung 7 Die IntelliTrace Anrufe anzeigen Zeigt die Ausführungsverlauf von der Anwendung

Einen Mechanismus zum Navigieren durch die Ausführungschronik besteht darin, die Aufrufe Ansicht verwenden, um einen Drilldown in die Aufrufe, die Sie untersuchen möchten. Jedes Mal, wenn Sie bei einem Aufruf in der unteren Hälfte der Ansicht Aufrufe Doppelklicken der Aufruf wird an das Ende der oberen Hälfte der Ansicht geholt, und die Synchronisierungen Instruction Pointer im Code-Editor auf den Eintrag Methode zeigen des Aufrufs, genau wie im Livedebuggen, wenn Sie in der Aufrufliste Aufwärtsrichtung. Sie können weiterhin zum Navigieren und rückwärts zu durchlaufen und mithilfe von IntelliTrace Verlauf auf diese Weise gesammelten Daten weiterleiten. Navigieren durch die Aufrufe-Ansicht handelt es sich um einen schnellen Mechanismus für den eine Übersicht über die Ausführungschronik und springt ausführenden groß, um die Codebasis.

Aufrufe der Ansicht ist nur eine Methode der Navigation. Ich kann auch durch den Code schrittweise navigieren. In der Bundsteg im Codefenster von Quelle, es handelt es sich um einen neuen Satz von Steuerelementen DVR-Stil, die es Ihnen ermöglichen, um Schritt durch den Code einfach as in einer herkömmlichen Debugsitzung (siehe Abbildung 8). Da ich im Debugmodus IntelliTrace schrittweise Ausführen von aufgezeichneten Ereignisse, die bei jeder Callsite auftreten, Funktion eingeben und Exit function. Natürlich funktioniert F10/F11 wie erwartet, wenn Sie Tastenkombinationen bevorzugen.

image: The Navigation Bar Offers DVR-Style Controls to Let You Step Through Your Application

Abbildung 8 Angebote DVR-Format von Steuerelementen in der Sie Schritt durch die Anwendung automatisch von der Navigationsleiste

Diese zwei Navigationsmethoden eignen sich hervorragend für die Untersuchung, aber manchmal wissen Sie genau, wo Sie den Haltepunkt festgelegt haben würde. Im Fall von dieser Anwendung weiß ich, den Namen der Funktion, in dem das Element dem Einkaufskorb hinzugefügt wird: Kona.Model.ShoppingCart::AddItem. Was ich wirklich tun möchten, ist zu dieser Funktion aufgerufen wurde ein zweites Mal springen und überprüfen die Werte übergeben und von der Funktion zurückgegeben. Genauer gesagt, möchte ich zu der Codezeile zu suchen, in der “ AdjustQuantity ”-Funktionsaufruf durchgeführt wurde. IntelliTrace unterstützt natürlich auch diese Technik Navigation.

Klicken Sie mit der rechten Maustaste im Editor, ich kann auf in der Zeile, die ich, wünschte können Sie nach suchen und wählen Sie aus dem Kontextmenü “ suchen für diese Zeile In IntelliTrace ” (siehe Abbildung 9). Die Suche beginnt, und die Ergebnisse werden in einer Suche Leiste am oberen Rand das Editorfenster, ermöglichen mich zum Navigieren zwischen den Suchergebnissen angezeigt. Nach der Synchronisation auf dem zweiten Suchergebnis, ist meine Anweisungszeiger rechts, in denen sein soll und ich kann den Aufruf mithilfe der andere Debuggerfenster (siehe untersuchenAbbildung 10).

image: The Search Functionality Lets You Jump Right to a Specific Function Call

Abbildung 9 Der Search-Funktionalität bietet die Möglichkeit, Sie an einen bestimmten Funktionsaufruf rechts wechseln

image: Search Results Are Displayed in a Search Results Bar at the Top of the Editor Window

Abbildung 10 Suchergebnisse werden in einem Ergebnisse Suchleiste im oberen Bereich einer-Editor-Fenster angezeigt.

Suchen im Fenster lokal an diesem Punkt, sehen Sie, dass der Warenkorb angepasst wird, so dass das Produkt neuen Menge in den Einkaufswagen 1 ist. Hierbei handelt es sich um den Fehler; ich die angepasste Menge 2 erwartet wurde. Betrachten die Codezeile, die neue Menge-Parameter berücksichtigen sollten berücksichtigt werden, nicht nur “ item.Quantity ”, sondern die “ Menge ”-Variable, die ebenfalls den Funktionsaufruf übergeben. Das Update ist auf den Funktionsaufruf zu ändern:

AdjustQuantity(product, item.Quantity + quantity);

Eliminiert die gefürchtete ‘ keine reproduzieren ’ Szenario

Allzu oft beteiligt Tester und Entwickler die in dem Dateien der Tester einen Fehler, die besagt, etwas unterbrochen, so, dass Sie nur ist “ keine reproduzieren ” Tanz aufgelöst Back mit einem Kommentar “ es nicht reproduzieren auf meinem Computer ”. Weder der Entwickler noch die Tester die Tanz teilnehmen möchte, aber Sie nicht den richtigen Satz an Tools, mit denen Sie kommunizieren, wo der Fehler an dem Punkt haben. Dies ist der Grund, warum wir das System entwickelt, so dass die gleiche Diagnoseinformationen, die IntelliTrace für dem Entwickler während einer Debugsitzung stellt, während der Ausführung von manuellen Tests durch Microsoft Test-Manager (MTM) erfasst werden kann.

Rufen Sie Let’s erneut auf das erste Szenario, das ich, das Debuggen, auf dem die Seite “ zu uns ” fehlgeschlagen ist, einwandfrei wiedergegeben. Wenn ein Tester dieser Bug abgelegt, es wahrscheinlich müsste einen Titel wie “ Application-Fehler beim Anzeigen der über die Seite, ” und vielleicht, wenn der Entwickler Glück war, ein Screenshot des Fehlers würde angefügt werden. Wenn Sie einen Fehler wie diese heute erhalten haben, wie rufen Sie möglicherweise über das Sie Debuggen? Wahrscheinlich können Sie die Anwendung Projektmappe aus der Quellcodeverwaltung zu laden und reproduzieren Sie das Problem auf Ihrem Computer Entwickler. In diesem Fall würden Sie in der Lage sein, das Problem zu debuggen und das Problem behoben, aber vorstellen, wie viel Zeit dies in Anspruch nehmen würde. Oder was geschieht, wenn das Problem durch eine Differenz in der Konfiguration Ihres Computers und der Tester Computer verursacht wurde? Entwickler sind beim Debuggen von Problemen wesentlich produktiver statt reproduzieren Umgebungen einrichten.

Mit Visual Studio 2010 hat die MTM Tester erhält die Möglichkeit, bequem erstellen, verwalten und Ausführen von manuellen und automatisierten Tests. Aber das ist nicht das Tool lediglich. MTM bietet Tester die Möglichkeit, Diagnosedaten Adapter Sammeln von Informationen in den Hintergrund, während ein Test ausgeführt wird. Beispielsweise können Sie automatisch erfassen einer Videoaufzeichnung des Tests ausgeführt werden, so dass der Entwickler sehen kann, genau wie der Tester gesehen haben. Andere Collectors umfassen die Fähigkeit zum Sammeln von Systeminformationen und Ereignisprotokolle aus dem Feld getesteten auf.

Wir haben einen IntelliTrace Diagnosedaten Adapter zum Erfassen von IntelliTrace-Dateien im Hintergrund automatisch hinzugefügt. Wenn der Tester eine Schritt Test schlägt fehl, und wählt einen Bug in die Datei, wird die gesammelte IntelliTrace Datei automatisch in TFS hochgeladen und auf den Fehler verknüpft. Dadurch erhalten Entwickler eine viel umfangreichere Informationen zum Debuggen von mit als einfach eine Reihe von Schritten reproduzieren. Wenn der Entwickler die IntelliTrace-Datei mit dem Fehler verknüpften geöffnet wird, hat er eine ähnliche Funktionalität erhalten so einen Minidump-Debuggen jedoch über den gesamten Zeitachse im Bereich der Anwendung, nicht nur einem bestimmten Zeitpunkt, wann das Programm ist abgestürzt. IntelliTrace-Daten können für alle verwalteten Anwendungen auf lokalen oder remote-Test-Agents, einschließlich ASP.NET-Anwendungen unter IIS ausgeführte gesammelt werden.

Beim Öffnen eines Fehlers TFS hat die MTM automatisch hinzugefügt, die manuellen Tests Schritte, die von der Tester reproduzieren Schritte basieren. Was noch besser ist, ist, wenn ich die “-alle Links ” Registerkarte des Fehlers anzuzeigen (siehe Abbildung 11), Kann ich feststellen, dass eine Datei IntelliTrace auch erfasst wurde. Durch Doppelklicken auf diese Datei, habe ich eine Zusammenfassungsseite Ansicht der Datei IntelliTrace bereitgestellt (siehe Abbildung 12).

image: Collected IntelliTrace Files Are Accessible Through the “All Links” Tab

Abbildung 11 Gesammelte IntelliTrace-Dateien werden Eingabehilfen über die “-alle Links ” (Registerkarte)

image: The IntelliTrace Summary Provides an Overview of What Data Was Collected

Abbildung 12 Zusammenfassung der IntelliTrace bietet eine Übersicht der welche Daten gesammelt wurde

Die Zusammenfassungsseite bietet mir eine Vielzahl von Informationen über die IntelliTrace-Datei enthält. Am oberen Rand der Seite habe ich eine Zeitskalaansicht der Threads in der Anwendung angegeben. Wenn ich von der Seite Zusammenfassung den “ Threads auflisten ”-Abschnitt zu erweitern, können die gleichen Daten in tabellarischer Form angezeigt. Doppelklicken Sie auf einen Thread aus der Datei IntelliTrace eine Debugsitzung zu starten und meine Anweisungszeiger an den Anfang des Threads festlegen.

Ich bin auch eine Liste aller Ausnahmen, die in der Datei IntelliTrace gesammelten gegeben. Bei eine Ausnahme auswählen, wird eine vertikale orangefarbene Linie auf dem Thread der Zeitachse angezeigt, in dem Auftreten der Ausnahme in der Zeit angezeigt. Beim Doppelklicken auf eine Ausnahme wird eine IntelliTrace-Debugsitzung gestartet und das Ereignis Ausnahme in der Ansicht IntelliTrace Ereignisse ausgewählt werden. Weitere können nach unten auf der Seite Zusammenfassung, eine Liste aller übereinstimmenden bis zu den Schritten zum manuellen reproduzieren Test-Ereignisse angezeigt. Das Ergebnis der einzelnen Schritt wird ebenfalls angezeigt. Auf eines dieser Ereignisse auch eine vertikale Linie auf dem Thread der Zeitachse platziert, und durch Doppelklicken auf ein Ereignis startet eine IntelliTrace der Debugsitzung das nächstgelegene mögliche Ereignis auswählen. Unteren Rand der Seite Zusammenfassung zeigt eine Liste von Systeminformationen über den Computer nach dem die getestete Anwendung ausgeführt wurde, und klicken Sie unter gesammelt, die eine Liste aller Module ist, die in den Prozess zusammen mit Ihren Dateipfad geladen wurden.

Werden Sie können selbst bietet Fragen diese Arbeit auf Version erstellt? Natürlich! Darüber hinaus Sie Don ’t benötigen Zugriff auf Symbole beim Sammeln oder Anzeigen der Daten IntelliTrace. Symbole sind nur notwendig, um die gesammelten Daten mit Quelldateien, verknüpfen, so dass Sie hilfreich, sind Wenn Sie die Debug-Sitzung öffnen.

Visual Studio 2010 und TFS haben zusätzliche Unterstützung für Symbol und Source Server, wenn Ihre Anwendung, als Teil erstellt wurde der TFS-, die richtige Version von Symbolen Buildsystem und Quellcode automatisch von TFS heruntergeladen durch IntelliTrace nach Bedarf. Sie müssen auch den Pfad des Symbolservers kennen.

Sobald Sie eine Debugsitzung von der Seite Zusammenfassung, die der Debugger funktioniert, genauso wie für eine live Debugsitzung (siehe Abbildung 13). Die meisten Debuggerfenstern stehen Ihnen zur Verfügung, und Sie können zu den IntelliTrace gesammelt hat Daten navigieren.

image: When Debugging Starts from the Summary Page, Visual Studio Operates Just Like a Live Debugging Session

Abbildung 13 Beim Debuggen startet von der Seite "Zusammenfassung" Funktionsweise Visual Studio entspricht einer Livesitzung Debuggen

Zusammenfassung

In diesem Artikel haben Sie gesehen kann, wie IntelliTrace sowohl Ihre täglichen Entwicklungsaktivitäten und Ihrer Fähigkeit, schnell und einfach Probleme diagnostizieren, ohne einen Neustart die Anwendung erheblich verbessern und Debug mit der herkömmlichen Break - Schritt - Technik untersuchen. Ich habe auch gezeigt Sie wie die Anzahl von Fehlern “ keine reproduzieren ” in eine Organisation reduziert werden kann, durch die Datenerfassung während der Tests, bei IntelliTrace ermöglicht es Entwicklern, Probleme offline ohne Zugriff auf einen live reproduzieren zu debuggen. Dies ist nur eine kurze Einführung in die Funktion, und wie Sie mit der Leistungsfähigkeit von IntelliTrace vertraut, starten Sie die Art und Weise zu ändern, die Sie debuggen.

Justin Marks Bei Microsoft in 2002 nach dem Empfang von seinem BS in Informatik und Engineering aus MIT gestartet. Er hat an MSN.com als Systemingenieur, Windows, wie ein Software Design Engineer in Test und als Programmmanager nun Visual Studio gearbeitet. Als eine PM-Diagnose-Team markiert wurde arbeitet das IntelliTrace-Feature für die nächste Version von Visual Studio 2010.

Dank an die folgenden technischen Experten für die Überprüfung dieses Artikels: Bill Boris, David Gray, Habib Heydarian und John Robbins