metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2016-07-25 10:18 am

C, магия макросов и отладка

Судя по тому, что я наблюдаю в либах на Си (например, libuv), магия из макросов весьма популярна, в том числе и для реализации разного рода структур данных вроде списков, хэшей (https://troydhanson.github.io/uthash/) и прочего такого.

Вопрос вот в чем - как это нормально отлаживать то? Падает с access violation где-нибудь в кишках макроса на три страницы, отладчик указывает на строку с макросом и единственный способ понять происходящее - медитировать до бесконечности на содержимое переменных, используемых в макросе, потому что кода не видно. Ну или пытаться в уме разложить дизассемблированный код на исходники.

[identity profile] juan-gandhi.livejournal.com 2016-07-25 02:47 pm (UTC)(link)
Я бы предложил не отлаживать ничего вообще. Иметь достаточно тестов и монад.

[identity profile] metaclass.livejournal.com 2016-07-25 03:08 pm (UTC)(link)
Не могу найти ни одного языка, в котором была бы нормальная система типов и при этом он позволял бы делать dll с сишным апи и работал на 2003 виндах.
Пару здоровенных проектов с нуля переписывать, похоже, гиблое дело - надо по частям на микросервисы перетаскивать, а там сплошные доисторические винды, фанатики-безопасники и админы с антивирусами, которые winapi и сеть ломают и прочее в том же духе.
Наверно, проще сменить работу было бы, но это не спортивно :)

[identity profile] juan-gandhi.livejournal.com 2016-07-25 05:23 pm (UTC)(link)
Да, сочувствую.

Насчет же неспортивности, я как-то постепенно пришел к выводу, что мне время моей жизни дороже, чем понты доказывать тормозам, что ты не тормоз. Главное, а смысл? Через 10 лет это все пройдет, а время потрачено. На, в сущности, фигню.

[personal profile] alll 2016-07-25 07:31 pm (UTC)(link)
Гм. По прошествии достаточного времени скорее всего выяснится, что при любом раскладе время потрачено на в сущности фигню (кроме быть может детей и студентов, да и то не уверен). Останется только выбор между фигнёй, которая радовала в процессе занятия ею и фигнёй, которая огорчала. :)

[identity profile] psilogic.livejournal.com 2016-07-25 08:10 pm (UTC)(link)
хорошо сказано :)

[identity profile] blackyblack.livejournal.com 2016-07-27 08:27 am (UTC)(link)
По прошествии времени ещё и бабло может остаться. Так что выбор несколько шире.

[personal profile] alll 2016-07-27 09:03 am (UTC)(link)
Начиная с некоторого уровня бабло не "может остаться", а просто остаётся, вопрос только в количестве. Но если вдруг оно кого-то радует в особо больших количествах, то выбор в сущности тот же.

[identity profile] blackyblack.livejournal.com 2016-07-27 09:05 am (UTC)(link)
Для вечноголодного метакласса это вопрос принципиальный. :)

[personal profile] alll 2016-07-27 09:11 am (UTC)(link)
Судя по его упорному сидению в одной позиции который год, принципиально для совсем другое. "Лучше быть нужным, чем свободным", евпочя.

ygrek.org.ua

[identity profile] ygrek (from livejournal.com) 2016-07-25 11:07 pm (UTC)(link)
Камло умеет.
Некоторые умельцы вон даже сделали целиком на камле замену для сишного libtls.