Frage

Ist es möglich, erste Chance supressions in Visual Studio (C # Debugger) für bestimmte Codezeilen zu unterdrücken?

Ich mag erste Chance Ausnahmen in dem Debugger verwenden, aber es gibt etwa 50 erste Chance Ausnahmen ich durch jede Debug-Sitzung gehen müssen, bevor ich auf den interessanten Code zu erhalten.

Zur Zeit drehe ich erste Chance Ausnahmen ab und sie dann manuell einschalten, aber das ist ein Aufwand und eine Zeit sinken.

War es hilfreich?

Lösung

DebuggerNonUserCodeAttribute Klasse

Wie von .NET 2.0, wenn Sie eine Methode mit der [ DebuggerNonUserCode ] Attribut, wird der Debugger erste Chance Ausnahmen in überspringen.

Zitat von MSDN Link (Hervorhebungen von mir):

  

Mitglieder   , die nicht Teil des Codes   speziell durch den Benutzer erstellt können   komplizieren die Debugging-Erfahrung .    Dieses Attribut unterdrückt die Anzeige   dieser Zusatztypen und Mitglieder   das Debugger-Fenster und automatisch   Schritte durch , anstatt in,   Designer bereitgestellten Code.

Es gibt keine Laufzeitverhalten abgesehen von Debugging, mit diesem Attribut zugeordnet ist.

Wenn Sie jedoch nur eine Methode mit bestimmten Linien für die Aufnahme in erster Chance-Ausnahmebehandlung und anderen Linien Visual Studio gedacht haben ausgeschlossen werden, gibt es auf dieser Ebene der Granularität wahrscheinlich keine Lösung. Sie können jederzeit eine große Methode in mehrere Methoden Refactoring und das Attribut auf ausgewählt diejenigen verwenden.


Zusätzliche Informationen ...

Beispiel für die Verwendung von diesem Artikel

using System.Diagnostics;
using XL = Microsoft.Office.Interop.Excel;

public static class WorkbookExtensions
{
    [DebuggerNonUserCode]
    public static bool TryGetWorksheet(this XL.Workbook wb, string worksheetName, out XL.Worksheet retrievedWorksheet)
    {
        bool exists = false;
        retrievedWorksheet = null;

        try
        {
            retrievedWorksheet = GetWorksheet(wb, worksheetName);
            exists = retrievedWorksheet != null;
        }
        catch(COMException)
        {
            exists = false;
        }

        return exists;
    }

    [DebuggerNonUserCode]
    public static XL.Worksheet GetWorksheet(this XL.Workbook wb, string worksheetName)
    {
        return wb.Worksheets.get_Item(worksheetName) as XL.Worksheet;
    }
}

Der Artikel VS Projektoptionen verwandten zeigt, die nützlich sein könnten.
alt text

Andere Tipps

Dies geschieht, weil Sie Ausnahmen falsch verwenden. 50 Erste, bevor Sie auf den „interessanten Code“ erhalten, ist kein gutes Zeichen. Es gibt keine Möglichkeit in Visual Studio, um sie in einigem Code zu überspringen, weil es nicht entworfen ist zu fördern, was Sie tun.

Wie gesagt, was ich tun würde wäre die erste Chance Ausnahmen in dem Debugger deaktivieren fängt, try/catch ausdrücklich die Ausnahme, die Sie fangen wollen, und in einem Debugger.Break() setzen, wenn Sie es gefangen haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top