Pregunta

¿Es posible suprimir la primera oportunidad supresiones que en Visual Studio C # (depurador) para líneas específicas de código?

Quiero usar excepciones de primera oportunidad en el depurador, pero hay unos 50 excepciones de primera oportunidad que tengo que ir a través de cada sesión de depuración antes de llegar al código interesante.

Actualmente, apago excepciones de primera oportunidad y luego girar de forma manual, pero eso es una molestia y un sumidero de tiempo.

¿Fue útil?

Solución

DebuggerNonUserCodeAttribute Clase

A partir de .NET 2.0, si se marca un método con el [ DebuggerNonUserCode ] atributo , el depurador se saltará excepciones de primera oportunidad en ella.

Presupuesto de enlace MSDN (énfasis añadido es mío):

  

miembros   que no son parte del código   específicamente creado por el usuario puede   complicar la experiencia de depuración .    Este atributo suprime la visualización   de estos tipos de adjuntos y miembros de   la ventana del depurador y automáticamente   pasos a través de , en lugar de en,   diseñador proporcionado código.

No hay ningún comportamiento en tiempo de ejecución, aparte de depuración, asociado a este atributo.

Sin embargo, si usted tiene sólo un método con ciertas líneas previstas para su inclusión en el primer mecanismo de manejo de excepciones oportunidad de Visual Studio, y otras líneas que ser excluido, no hay probablemente una solución a este nivel de granularidad. Siempre se puede refactorizar un método de gran tamaño en múltiples métodos y utilizar el atributo de los escogidos.


Información adicional ...

Ejemplo de uso de este artículo

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

El artículo muestra relacionada VS opciones de proyectos que podrían ser útiles.
text alt

Otros consejos

Esto está ocurriendo porque estás mal uso de excepciones. Conseguir 50 antes de llegar a la "código interesante" no es una buena señal. No hay manera en Visual Studio para saltar en un cierto código, porque no está diseñado para fomentar lo que está haciendo.

Dicho esto, lo que haría sería apagar la captura de excepciones de primera oportunidad en el depurador, explícitamente try/catch la excepción que no se desea capturar, y lo puso en un Debugger.Break() cuando usted ha cogido a él.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top