metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2006-07-29 02:41 pm

С пробуждением вас

Таки решил чуть-чуть подправить свой самый первый проект, переживший уже 3.5 версии, находящийся в эксплутации лет 8, который давно пора нахрен переделать на нормальные базы данных и технологии связи, но тем не менее работающий.

Проект когда-то давно обслуживался только по модемной связи на ОЧЕНЬ хреновых линиях, где 2400 добиться было счастьем, а нормой было 1200, поэтому он разбит на порядка сотни мелких dll, отвечающих каждый за определенные функции и несколько сотен xml-файлов с настройками, печатными формами и прочими данными. Так проще было закачивать файлы с апдейтами.

И вот решил я подправить одну dll. И отладить. А надо сказать, что в одном из новых проектов я тоже использую подгружаемые с сервера dll для того, чтобы функциональность клиента определялась не его кодом, а базой данных к которой он подключен. Ну я подгружаемую dll тоже попытался отладить, чего-то не заладилось, времени не было разбираться, почему оно не отлаживается, ошибку я и так обнаружил(мысленным взором :)) и исправил, в итоге на отладку забил.

И вот начинаю я отлаживать старый проект c подгружаемой dll. Фиг. Не отлаживается. А точно помню что в 2001-2002 году массово отлаживал dll только в путь. И помню, что читал про проблемы с отладкой dll в Delphi в Windows XP. Короче, как оказалось, проект этот старый я последний раз менял и отлаживал так давно, что у меня еще 98 винда была на компе. В каком дельфи исправили проблему с отладкой, я уже и не упомню, но точно не раньше 6-го. У меня 4-й.

Вот сижу теперь как пень и думаю, что дальше делать. Модульные проекты вещь конечно полезная, но блин, если их придется отлаживать только вставлением вывода в лог через строку, я крышей поеду. А новый проект все растет и растет и давно пора его на модули разбивать.


PS: Эта ошибка уже исправлена в Delphi 7. Мдаа...

[identity profile] sbj-ss.livejournal.com 2006-07-29 06:16 pm (UTC)(link)
Ну так правильно. В многопоточке, драйверах хрен знает чего и т.д. много правильнее либо какать в лог-файл, либо использовать виндошные функции "вывод в отладчик". В приличной пачке сданных мной программ на уровне компонентной библиотеки заложено: "если есть ключ -dXX, включить отладочный лог компонента XX" - иначе просто невозможно определить, в каком месте на особо безумной конфигурации Офиса и т.д. произошла ошибка. Нормальный и кошерный юниксовый подход. :)