Y a-t-il des attributs que je peux appliquer aux méthodes de la chaudière afin que de telles méthodes n'apparaissent pas dans les traces de pile? J'en ai beaucoup et dans certains cas, ils sont plusieurs niveaux profonds. Il s'agit juste d'encombrer des choses.
Exemple code: P>
class Program { public static void ThrowMe() { throw new NotImplementedException(); } public static void HideMe() { ThrowMe(); } static void Main(string[] args) { try { HideMe(); } catch (Exception e) { } } }
3 Réponses :
Vous pouvez utiliser le déboggerHadkaTribute P >
Cela empêche le débogueur de briser des exceptions attrapées dans ce député, mais cela affecte-t-il la trace de la pile?
Il s'avère que cette réponse était correcte. Hans l'époque plus en détail.
Cet attribut fonctionne à merveille pour avoir caché des méthodes d'emballage du débogueur. Ils n'apparaissent pas dans la CallStack, entrant dans une seule volonté vous emmèneront à l'appel suivant ci-dessous, ce que vous vouliez voir de toute façon pas l'enveloppe.
mettre la console.write (e) dans le bloc de capture. Passez à la version de la libération et appuyez sur CTRL + F5. Vous verrez ceci:
System.NotImplementedException: The method or operation is not implemented. at ConsoleApplication1.Program.ThrowMe() in C:\Users\hpassant\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs:line 9 at ConsoleApplication1.Program.Main(String[] args) in C:\Users\hpassant\AppData\Local\Temporary Projects\ConsoleApplication1\Program.cs:line 17
Si votre méthode n'est pas assez simple pour être inlinée automatiquement, vous pouvez donner au compilateur un indice fort que vous voulez que ce soit avec le Vous devez toujours compiler en mode de sortie. P> [méthodimploption.aggressiveInlining)] code> attribut. < / p>
Ce que vous demandez est quelque chose qui convient parfaitement dans certains cas et un cauchemar dans d'autres. Imaginez que quelqu'un d'autre lisait votre trace de pile et a vu que
principal code> appelé
throthme () code>. Ensuite, ils enquêtent sur
principal code> mais ne peuvent pas voir où cet appel est fait. En outre, imaginez
principal code> est de 500 lignes de sorte que ce n'est pas aussi évident que votre échantillon. Je sympathise avec vous, mais finalement, cette "caractéristique" serait maltraitée et que le codage serait un cauchemar, c'est pourquoi cela n'existe pas.
Est-ce que cela répond à votre question? Comment masquer la méthode actuelle à partir d'une exception Trace de pile dans .NET?