Система. Диагностика. Отладка. WriteLine в производственном коде

Немного вне темы в способе использовать его. Одиночные элементы переоценены, и метод "общего состояния" является столь же эффективным, и главным образом, очень чистым в Python, например:

class Borg:
    __shared_state = {}
    def __init__(self):
        self.__dict__ = self.__shared_state
    # and whatever else you want in your class -- that's all!

Теперь каждый раз Вы делаете:

obj = Borg()

это будет иметь ту же информацию, или, будет несколько тем же экземпляром.

63
задан Justin R. 6 November 2009 в 00:37
поделиться

6 ответов

Все члены в классе Debug помечены ConditionalAttribute , поэтому сайты вызовов не будут компилироваться в сборку Release.

75
ответ дан 24 November 2019 в 16:21
поделиться

Вызов метода System.Diagnostics.Debug присутствует, только если определен символ условной компиляции «DEBUG». По умолчанию символ «DEBUG» определен только для отладочных сборок.

Компиляторы, поддерживающие ConditionalAttribute игнорировать вызовы эти методы, если только "DEBUG" не определяется как условная компиляция символ.

17
ответ дан 24 November 2019 в 16:21
поделиться

Поскольку все методы отладки имеют атрибут [Conditional ("DEBUG")], если вы переключитесь с отладки на выпуск, вам не придется беспокоиться об этом, поскольку вызовы этих методы будут удалены (вместе с другими оптимизациями сборки Release).

11
ответ дан 24 November 2019 в 16:21
поделиться

Информация об отладке видна только при работе в режиме отладки . В режиме выпуска никакие операторы отладки не будут отображаться (вы можете использовать Trace вместо Debug , если хотите, чтобы эти операторы были видны в режиме выпуска).

http://support.microsoft.com/kb/815788

7
ответ дан 24 November 2019 в 16:21
поделиться

Почти все члены Debug помечены ConditionalAttribute. Такие компиляторы, как C #, будут пропускать вызовы этих методов во время сборки Release, так что вы в безопасности.

Информация о режиме здесь: http://msdn.microsoft.com/en-us/library/system.diagnostics.debug.aspx

1
ответ дан 24 November 2019 в 16:21
поделиться

Providing you compile without the /d:DEBUG option or #define DEBUG, your WriteLine calls will not physically present in your release code; there is no way for any third party to recover any information from these calls, as they literally not there in the release version.

More details here: Debug Class (System.Diagnostics) on MSDN

2
ответ дан 24 November 2019 в 16:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: