У меня есть обычный код C #. У меня нет исключений . Я хочу программно регистрировать текущую трассировку стека для целей отладки. Пример:
public void executeMethod()
{
logStackTrace();
method();
}
c#
.net
logging
stack-trace
printstacktrace
Ricibald
источник
источник
StackTrace
это собака медленно - так что используйте это экономно.Альтернативой
System.Diagnostics.StackTrace
является использование System.Environment.StackTrace, которое возвращает строковое представление трассировки стека.Другой полезный вариант - использовать переменные
$CALLER
и$CALLSTACK
отладки в Visual Studio, поскольку это можно включить во время выполнения без перестройки приложения.источник
Environment.StackTrace
просто новый примерStackTrace
.System.Environment.StackTrace
может быть более удобным способом доступа к этой информации.System.Diagnostics.StackTrace
- см. Msdn.microsoft.com/en-us/library/…Environment.StackTrace
всегда начинается сat System.Environment.GetStackTrace(Exception e, Boolean needFileInfo) at System.Environment.get_StackTrace()
? Это не является частью текущей трассировки стека, поскольку кто-то ищет ее.Есть два способа сделать это. Это
System.Diagnostics.StackTrace()
даст вам трассировку стека для текущего потока. Если у вас есть ссылка наThread
экземпляр, вы можете получить трассировку стека для этого через перегруженную версиюStackTrace()
.Вы также можете проверить вопрос переполнения стека. Как получить трассировку стека нетокового потока? ,
источник
Вы также можете сделать это в отладчике Visual Studio без изменения кода.
Конечно, это не помогает, если вы запускаете код на другом компьютере, но может быть очень удобно иметь возможность автоматически выплевывать трассировку стека, не затрагивая код выпуска или даже без необходимости перезапуска программы.
источник
Вывод будет похож на:
Замените
Console.WriteLine
своимLog
методом. На самом деле, нет необходимости.ToString()
в случае Console.WriteLine, как он принимаетobject
. Но вам может понадобиться это для вашего метода Log (string msg).источник
Кажется, работает на меня
источник