LINUX.ORG.RU

Дампер структур (+)


0

0
В ходе разработки и отладки одной софтины
появилась такая проблема, необходимо писать в лог
что в тот или иной момент времени содержиться
в определенных структурах. Только вот количество
членов структуры велико и писать руками конструкции типа
fprintf(fp, "st.memb1 = %d\n", st.memb1);
fprintf(fp, "st.memb2 = %s\n", st.memb2);
как-то удовольствия не доставляет, поэтому такой вопрос
возможно есть уже написаный софт который сгенерит подобный
код автоматом, либо к примеру в том же GDB подобная возможность
чтоб можно были приатачиться к работающей проге и сделать
дампы нужных структур ?
В общем хелп, идее по другим способам дебага так же велком.
Пишется все на С под Линукс....
anonymous
> возможно есть уже написаный софт который сгенерит подобный код автоматом

по идее такой софт это две-три строчки на перле.

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

(наверное с дебагером можно сделать правильнее)

scotinomys
()
Ответ на: комментарий от scotinomys
> по идее такой софт это две-три строчки на перле.

в принципе да, только вот всеже охота найти
че нить уже готовое, вылизаное и нормально работающее
однако если эти попытки остануться
без результата придеться сесть и написать :)

anonymous
()
во первых писанину можно сократить ловкими дефайнами
что-то навроде:
#define PR(field,format) fprintf(stderr,field ## "= " ## format ## "\n",field)
PR(st.memb1,"%d");
PR(st.memb2,"%s");

во вторых gdb конечно рулит и Вы правильно описали ход действий,
осталось только доки почитать и написать сценарий отладки :)
MKuznetsov ★★★★★
()
Вот так, на простеньких примерах народ постепенно подползает к мыслишке о том, что метапрограммирование - это не так уж и плохо.
Leprechaun
()
boost::mpl тебе поможет
anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.