Отладка обработки ошибок
May. 3rd, 2009 01:24 pmЕсли отладить нормальную работу программы это еще куда ни шло, то отладить работу программы в случае когда ей пришел трындец - это что-то достаточно трудоемкое. Потому что обычно нормальная работа хорошо разбивается на отдельные тесты, если у программы кошерная модульная архитектура, а вот сломаться программа может во всех мыслимых и немыслимых комбинациях.
Особо хорошо таким заниматься в ISAPI фильтре для IIS, написанном на чистом С. Там даже вывод в лог и то ломается от малейшего чиха, а компилятор спокойно без ворнингов и ошибок компилирует такую херь, что смотреть страшно.
Например, в функцию передается указатель на функцию, а я передал указатель на структуру, где эти указатели лежат - компилятору пофиг.
Или десятки вариаций функций с именем типа (_)(s,w)print(f,w) - безопасные и небезопасные, виндовские и от С-рунтайма, одни возвращают код ошибки, другие валятся с исключением при переполнении буфера, грохая весь w3wp.exe. А всего-то хотелось вывести сообщение об другой ошибке, да.
Особо хорошо таким заниматься в ISAPI фильтре для IIS, написанном на чистом С. Там даже вывод в лог и то ломается от малейшего чиха, а компилятор спокойно без ворнингов и ошибок компилирует такую херь, что смотреть страшно.
Например, в функцию передается указатель на функцию, а я передал указатель на структуру, где эти указатели лежат - компилятору пофиг.
Или десятки вариаций функций с именем типа (_)(s,w)print(f,w) - безопасные и небезопасные, виндовские и от С-рунтайма, одни возвращают код ошибки, другие валятся с исключением при переполнении буфера, грохая весь w3wp.exe. А всего-то хотелось вывести сообщение об другой ошибке, да.