gdb красивая печать с прямыми вызовами функций

Я пытаюсь использовать прекрасные средства печати GDB, чтобы показать пользовательский матричный класс C ++.

Класс вполне стандартный, найти можно где угодно. Это шаблон, параметризованный типом, к которому можно получить доступ с помощью нотации C-типа, такой как mat [i] [j]. Этот первый неявно возвращает другой шаблонный класс «Slice», представляющий строку или столбец, к которому снова может получить доступ оператор [] для извлечения данных. Сам класс использует простой массив C для хранения, но в нем реализованы некоторые уловки, такие как возможность предварительного выделения большей матрицы, включение ненулевых запусков, использование шага и т. Д. Класс не имеет встроенной печати интерфейс, и я не могу его изменить или легко связать с моим собственным кодом.

Пользовательские функции затрудняют воспроизведение кода прямого доступа к данным в Python. Но нужно ли это? В общем: почему красивая печать должна воспроизводить логику доступа к данным? Разве я не могу просто использовать вызовы C ++ и использовать операторы [] для печати i, j-го элемента? Тот факт, что класс Slice является временным в GDB во время такого запроса, еще больше усложняет это.

Я также довольно новичок в написании сценариев на Python и GDB. Я попытался взломать примеры, чтобы заменить доступ к данным с помощью вызовов gdb.execute, но я понятия не имею, как получить доступ к имени объекта из функции to_string, поэтому я могу использовать что-то вроде gdb.execute (??? + '[] + str (i) + ']', Ложь, Истина).

Интересно, как это сделать наиболее эффективно?

6
задан takbal 20 December 2011 в 16:05
поделиться