Domanda

E 'possibile sopprimere primi supressions possibilità in Visual Studio (C # debugger) per specifiche linee di codice?

Voglio usare prime eccezioni di possibilità nel debugger, ma ci sono circa 50 prime eccezioni di possibilità ho bisogno di passare attraverso ogni sessione di debug prima di arrivare al codice interessante.

Al momento, spengo prime eccezioni di possibilità e poi accendere manualmente, ma questa è una seccatura e un lavandino di tempo.

È stato utile?

Soluzione

DebuggerNonUserCodeAttribute Classe

Come di .NET 2.0, se si contrassegna un metodo con il [ DebuggerNonUserCode ] attributo , il debugger salterà prime eccezioni di possibilità in esso.

Citazione di collegamento MSDN (enfasi aggiunta è mio):

  

soci   che non fanno parte del codice   appositamente creato dall'utente can   complicare il lavoro di debug .    Questo attributo elimina la visualizzazione   di questi tipi di ausiliari e membri in   la finestra di debugger e automaticamente   passi attraverso , piuttosto che in,   progettista codice fornito.

Non c'è comportamento in esecuzione da parte di debugging, associato a questo attributo.

Comunque, se avete solo un metodo con certe linee previste per l'inserimento nel primo meccanismo di gestione delle eccezioni possibilità di Visual Studio, e altre linee di essere esclusi, non c'è probabilmente una soluzione a questo livello di granularità. È sempre possibile il refactoring di un metodo di grandi dimensioni in più metodi e utilizzare l'attributo su quelli selezionati.


Altre Informazioni ...

Esempio di utilizzo da questo articolo

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;
    }
}

L'articolo mostra correlate VS opzioni di progetto che potrebbero essere utili.
alt text

Altri suggerimenti

Questo accade perché si sta mis-usare le eccezioni. Ottenere 50 prima di arrivare al "codice di interessante" non è un buon segno. Non c'è modo in Visual Studio di saltare in qualche codice, perché non è stato progettato per incoraggiare quello che stai facendo.

Detto questo, quello che farei sarebbe quella di disattivare la cattura di eccezioni first-chance nel debugger, esplicitamente try/catch l'eccezione si vuole catturare e mettere in un Debugger.Break() quando hai catturato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top