Как отладить макрос в си?

https://github.com/libuv/libuv/blob/v1.x/src/queue.h#L72

Вот например макрос с десятком операций вложенных в другие макросы... Как отладить на какой именно операции я попал в сегфолт?


Ответы (1 шт):

Автор решения: bukkojot

Макроопределения лучше всего дебажить при помощи... Просмотра выхлопа препроцессора! Если используется свободный компилятор gcc, то у него есть замечательный ключик -E, позволяющий увидеть код, получившийся в итоге на выходе препроцессора. Достаточно просто запустить:

 gcc -E file.c

И посмотреть, что же произошло. Не стоит забывать и о флагах, которые может выставлять ваша система сборки/отладки.

А вот отладка сегфолтов - это уже работа отладчика, здесь нужно скорее использовать ключики -g и -ggdb того же компилятора, чтобы добавить в бинарник отладочную информацию, а потом использовать какой-либо отладчик, вроде gdb, который и укажет проблемное место. Но это уже другой вопрос.

→ Ссылка