Здравствуйте, VladD2, Вы писали:
E>>Ага, конечно. У тебя, наверное, никогда наведенных ошибок не было.
VD>Бывали. В основном когда писал на С/С++ и скриптах разных. На Шарпе что-то наведенки крайне мало, и она легко отлавливается. С Немерлом пока тоже вроде все понятно в отладке.
E>> Когда код проходит все unit-тесты, но в одном из двадцати реальных прогонов почему-то ломается.
VD>Я на скриптах не пишу. Так что техники безопасного секса не так актуальны. Нет у меня обычно юнит-тестов... Обычно все и так неплохо работает.
Ну-ну. Работает и пусть работает. Ты мне еще расскажи, что статическая типизация на 99% устраняет необходимость тестирования приложений. Что после успешной компиляции нужно проверить всего две вещи -- что программа успешно стартует и столь же успешно завершается. Если эти условия выполняются, значит все работает корректно.
Увольте, батенька. Рассказывай эти сказки начинающим программистам, которые кроме окошек в WinForms ничего не программируют.
VD>Обясняю последний раз и закроем тему.
Не нужно считать окружающих тупее себя. То, что ты излагаешь ниже я и без тебя прекрасно понимаю, благо разные преобразователи исходных текстов писать приходилось.
Я просто хотел понять, что делать в случае, когда я вижу, что некий макрос, производящий compile-time вычисления подставляет мне в код явно не правильную константу. Причем делает это он не всегда, а один раз в некотором месте исходного кода.
То, что нельзя зайти в код макроса из обычной отладки моего кода я и без вас с IT прекрасно понимал.
Я не понимал, как войти в отладку кода макроса, когда этот код работает в отдельном параллельном процессе ncc. Оказалось, что провоцируется отладка процесса компилятора путем подстановки в код макроса специальных провоцирующих отладку инструкций (вроде Assert(false)). После этого стало понятно. Напомнило, как некоторые товарищи в C/C++ код вставляли asm { int 3h; } (вроде так).
Только для этого способа, как я понимаю, нужно иметь компилируемый исходный код макроса чтобы вставить в него Assert(false) и перекомпилироваться.
VD>1. Место не должно влиять на результат, если макрос написан грамотно. Надо стараться делать так, чтобы разные обращения к макросам с одинаковыми параметрами приодили к одинаковому результату. Побочные эффекты иногда конечно полезны, но нужно четко осознавать их опасность. Это ничем не отличается от создания прикладного кода.
Прописная истина. Если бы программы писались так просто, необходимости в отладке вообще бы не было.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.