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
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.