Избегайте отладки и вызовов для кусочка кода в C#
-
12-10-2019 - |
Вопрос
В Delphi директивы компилятора {$ d-} и {$ l-} позволяют эффективно избегать генерации отладки и локальной информации переменной для определенного раздела кода.
В практическом вопросе, который имеет влияние, чтобы «скрыть» код из представления отладки, он не появляется в стеке вызовов, и вы не вступаете в него во время отладки.
Есть ли способ достичь того же результата в C# с использованием VS 2008?
Примечание. Причина в том, что у нас есть стабильная структура, которую не нужно отладкой, но, как правило, склоняются со стеком вызовов и со стандартным потоком отладки.
Решение
я использую DebuggerNoNuserCodeatTribute так что вы по умолчанию не ломайтесь и не входите в код; Тем не менее, Benifit to over debugherstepthrough заключается в том, что вы можете перейти к Options-> Debugger-> Просто настройка кода и разрешить нарушение/отладку отмеченного вами кода. Это значительно помогает, если у вас есть проблемы. Я обычно использую его на целых классах.
Кстати, стек вызовов будет автоматически скрывать код, не являющийся использованием, как отмечен этим атрибутом :) Конечно, вы можете просто щелкнуть правой кнопкой мыши окно стека вызовов и переключить «Внешний код», чтобы скрыть/показать информацию о недостании стека.
Другие советы
Я думаю, ты хочешь DebuggerStepThrough
атрибут:
DebuggerStepThrough
Попросите отладчика пройти через код вместо того, чтобы входить в код.
[DebuggerStepThrough]
public void MyMethod()
{
}
Это особенно полезно для сеттеров/Getters с момента отладки в тех, кто обычно просто добавляет шум (пример из MSDN):
public int Quantity
{
[DebuggerStepThrough]
get { return ComplexLogicConvertedToMethod(); }
[DebuggerStepThrough]
set { this.quantity = value ; }
}
Или пропустить конкретный раздел кода:
... some production code
#if DEBUG
Console.WriteLine("Debug version");
#endif
... some more production code