Stack Trace для ведения журнала в .NET

Я написал модуль logger / exceptionfactory, который использует System.Diagnostics.StackTrace, для получения атрибутов от вызывающих методов и их объявляющих типов. Однако я заметил, что если я запускаю код вне Visual Studio в режиме выпуска, некоторые из моих более коротких методов становятся встроенными и пропадают из трассировки стека. Теперь у меня нет возможности проверить, будет ли метод встроен во время выполнения, но я не хочу [MethodImpl (MethodImplOptions. NoInlining)] каждый важный метод. Но если из-за этого метод из моих базовых классов будет отсутствовать, я могу неправильно прочитать информацию о слое и операции, что может привести к ложному журналу или ошибочно параметризованным исключениям.

Есть ли эмпирическое правило, что встраивается, где и когда? По-разному ли обрабатываются виртуальные методы, статические методы и методы базового класса? Мне нужно беспокоиться только о встраивании внутри сборки? Внутри пространства имен?

5
задан TDaver 31 January 2011 в 11:32
поделиться