Как отладить макрос в си?
https://github.com/libuv/libuv/blob/v1.x/src/queue.h#L72
Вот например макрос с десятком операций вложенных в другие макросы... Как отладить на какой именно операции я попал в сегфолт?
Ответы (1 шт):
Макроопределения лучше всего дебажить при помощи... Просмотра выхлопа препроцессора! Если используется свободный компилятор gcc, то у него есть замечательный ключик -E, позволяющий увидеть код, получившийся в итоге на выходе препроцессора. Достаточно просто запустить:
gcc -E file.c
И посмотреть, что же произошло. Не стоит забывать и о флагах, которые может выставлять ваша система сборки/отладки.
А вот отладка сегфолтов - это уже работа отладчика, здесь нужно скорее использовать ключики -g и -ggdb того же компилятора, чтобы добавить в бинарник отладочную информацию, а потом использовать какой-либо отладчик, вроде gdb, который и укажет проблемное место. Но это уже другой вопрос.