Вопрос

В 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top