Question

Est-il possible de supprimer supressions première chance dans Visual Studio (C # débogueur) pour les lignes de code spécifiques?

Je veux utiliser exceptions de première chance dans le débogueur, mais il y a environ 50 exceptions de première chance que je dois passer par chaque session de débogage avant de passer à code intéressant.

À l'heure actuelle, j'éteins exceptions de première chance, puis de les activer manuellement, mais c'est embêtant et un puits de temps.

Était-ce utile?

La solution

DebuggerNonUserCodeAttribute classe

de .NET 2.0, si vous marquez une méthode avec le [ DebuggerNonUserCode ] attribut , le débogueur ignorera exceptions de première chance en elle.

Citation de lien MSDN (non souligné est le mien):

  

membres   qui ne font pas partie du code   spécialement créé par l'utilisateur peut   compliquer l'expérience de débogage .    Cet attribut supprime l'affichage   de ces types et adjoints en   la fenêtre de débogage et automatiquement   étapes par , plutôt que dans,   concepteur code fourni.

Il n'y a pas de comportement d'exécution pour le débogage, associé à cet attribut.

Toutefois, si vous avez juste une méthode avec certaines lignes destinées à l'inclusion dans le premier mécanisme de gestion des exceptions chance de Visual Studio et d'autres lignes à exclure, il n'y a probablement pas une solution à ce niveau de granularité. Vous pouvez toujours factoriser une grande méthode dans plusieurs méthodes et utiliser l'attribut sur les sélectionner.


Infos supplémentaires ...

Exemple d'utilisation de cet article

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'article montre lié VS options de projet qui pourraient être utiles.
text alt

Autres conseils

Cela se produit parce que vous utilisez mal des exceptions. Obtenir 50 avant d'arriver au « code intéressant » n'est pas un bon signe. Il n'y a aucun moyen dans Visual Studio pour les sauter dans un code, car il n'est pas conçu pour encourager ce que vous faites.

Cela dit, ce que je ferais serait de désactiver la capture d'exceptions de première chance dans le débogueur, try/catch explicitement l'exception que vous ne voulez attraper et mettre dans un Debugger.Break() quand vous avez attrapé.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top