Может ли плагин VS внедрить код в процесс компиляции? - PullRequest
0 голосов
/ 30 мая 2009

Я как бы концептуально проектирую плагин, который мне очень хотелось бы иметь здесь. Я хотел бы иметь возможность пометить строку в моем коде (что-то вроде того, как добавляются точки останова), а затем получить журнал трассировки, когда выполнение выполняется через них. Вместо того, чтобы устанавливать точки останова (потому что они не работают вне отладчика), я бы предпочел, чтобы внутри компилятора была добавлена ​​дополнительная регистрация, так что AST.

Главным было бы сравнение различных прогонов программы; он падает, если я делаю A, но не если я делаю B, и большая часть кода должна быть такой же, так где же он расходится?

Сейчас я делаю это с помощью файлового ввода-вывода и инструмента сравнения; это работает, но немного неуклюже.

Я предполагаю, что вопрос: Можно ли это сделать, и было ли что-то подобное сделано?

1 Ответ

1 голос
/ 30 мая 2009

Я не знаю ничего, что бы точно соответствовало вашему описанию. Однако ...

Для использования только в режиме отладки Visual Studio 2010 имеет «точки трассировки». Они добавляются так же, как точки останова, но вместо остановки программы они выводят некоторый текст в выходные данные отладки. Поскольку они установлены в отладчике, они вообще не влияют на ваш исходный код.

Если вы хотите отслеживать активность в сборке выпуска, просто добавьте вызовы System.Diagnostic.Trace.WriteLine () в ваш код. Им можно управлять с помощью TraceSwitches, поэтому их можно отключить по умолчанию и включать только в том случае, если вам нужна дополнительная информация для диагностики проблемы. В отличие от вызовов Debug.WriteLine (), они включены (по умолчанию) в сборки выпуска, а также в сборки отладки. Обратите внимание, что эти вызовы трассировки обходятся незначительно, даже если переключатель трассировки отключен, поэтому избегайте их использования в критических областях производительности вашего кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...