En Python, je peux utiliser des décorateurs pour suivre l’appel de fonction, ses variables et ses valeurs. C’est très facile à utiliser. Je me demande juste si C # peut faire la même chose? Je découvre qu’il existe un exemple de code d’atsortingbut CallTracing en ligne. Cependant, il n’a pas montré le résultat que j’attendais. […]
J’ai un problème avec mon installation de Visual Studio. Quand j’ai une exception, j’ai toujours des numéros de ligne incorrects dans sa trace de stack. Il y a toujours un point vers la dernière ligne de chaque méthode dans ma base de code. En même temps, tout est en ordre lorsque je trace des programmes […]
Existe-t-il des scénarios possibles dans lesquels la trace de stack peut être complètement vide? On m’a transmis un texte de journal des événements copié à partir des propriétés de la machine, qui indique ce qui suit: Description : une exception non gérée s’est produite et le processus a été arrêté. ID de l’application : DefaultDomain […]
J’ai donc une classe PropertyBag destinée à implémenter INotifyPropertyChanged. Afin de rendre ce code aussi propre que possible et d’éviter les erreurs de l’utilisateur, j’utilise la stack pour obtenir le nom de la propriété. Vous voyez, si le nom de la propriété ne correspond pas exactement à la propriété réelle, alors vous aurez un échec […]
J’ai un cas inhabituel où j’ai une exception très simple qui est lancée et prise dans la même méthode. Ce n’est pas re-jeté (le genre habituel de problèmes de programmeurs naïfs ont). Et pourtant, son StackFrame ne contient qu’une seule méthode actuelle. Voici à quoi ça ressemble: at (my class).MyMethod() in C:\(my file path and […]
J’ai essayé d’obtenir le nom de fichier et le numéro de source lorsqu’une exception est levée. Mais je n’ai rien. class Program { static void Main(ssortingng[] args) { try { throw new InvalidOperationException(); } catch (InvalidOperationException exception) { var stackTrace = new StackTrace(exception); var currentFrame = stackTrace.GetFrame(0); var fileName = currentFrame.GetFileName(); var sourceLineNumber = currentFrame.GetFileLineNumber(); […]
J’ai un code managé qui appelle une méthode dans une DLL native (j’ai les fichiers de symboles appropriés). Parfois, cette méthode native lève une exception que je rattrape dans mon code managé. Cependant, lorsque j’imprime le stacktrace à partir de mon exception interceptée, je ne vois que du code géré (la dernière image est l’appel […]
Web config a debug = true et le projet est une version de débogage et les fichiers pdb sont présents dans le répertoire bin, mais je n’obtiens pas de numéros de ligne dans mon stacktrace lorsqu’une exception est levée. Fonctionne bien avec IIS / Cassini local mais pas sur nos serveurs IIS de test. Y […]
Quelque chose d’étrange se passe dans mon code lorsque j’utilise un StackTrace. C’est presque comme si les informations de débogage n’étaient pas en cours de chargement … mais j’exécute ceci sur la version DEBUG. J’ai sérieusement manqué d’idées: public class TraceHelper { private static IDictionary TraceDictionary = new Dictionary(); public TraceHelper(int duration) { … TraceDictionary[InternalGetCallingLocation()]+=duration; […]
J’utilise la méthode suivante dans mon application Web ASP.NET pour recevoir la trace de stack pour une exception: public static void getStackTraceInfo(System.Diagnostics.StackTrace trace) { for (int i = 0; i < trace.FrameCount; i++) { int nLine = trace.GetFrame(i).GetFileLineNumber(); int nCol = trace.GetFrame(i).GetFileColumnNumber(); string methodName = trace.GetFrame(i).GetMethod().Name; } } try { } catch(Exception ex) { getStackTraceInfo(new […]