Как напечатать значение структуры (например, GDB ptype) автоматически в C? - PullRequest
4 голосов
/ 19 сентября 2011

Этот вопрос надолго остается в моей голове. Как мы знаем, мы можем легко напечатать структуру данных в GDB, когда мы отлаживаем, как команда gdb ptype, она может вывести все значения поля структуры. Я знаю, что GDB использует библиотеку bfd для чтения символической информации в объектном файле. Мой вопрос: если я хочу сделать это в моем исходном коде C, как это сделать? потому что я не хочу печатать каждое поле структуры одно за другим. Есть ли какая-либо существующая библиотека, чтобы решить эту проблему? Я думаю, что библиотека не только отвечает моим требованиям, но и будет очень полезна для многих других программистов при написании кода на C / C ++.

Ответы [ 2 ]

0 голосов
/ 06 июня 2013

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

0 голосов
/ 19 сентября 2011

Что касается C, такая библиотека не может существовать.

Что вы можете сделать, это написать инструмент типа компилятора, который берет описание struct на каком-либо языке и генерирует файл заголовка с объявлениями struct на C и исходный файл с печатным кодом. Такие инструменты существуют (например, protobuf-c), но они в основном направлены на эффективную двоичную сериализацию, а не на удобочитаемое представление данных на языке C.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...