Я пытаюсь использовать красивые возможности печати GDB, чтобы показать собственный класс матрицы C++.gdb довольно печать с прямыми вызовами функций
Класс довольно стандартный, вы можете найти где угодно. Это шаблон, параметризованный типом, и к нему можно получить доступ с помощью записи типа C, такой как mat [i] [j]. Это сначала неявно возвращает другой класс «Slice», представляющий строку или столбец, который может снова получить доступ к оператору [] для извлечения данных. Сам класс использует простой массив C для хранения, но он реализует некоторые трюки на нем, такие как опция предварительного выделения большей матрицы, включение ненулевых запусков с использованием шага и т. Д. Класс не имеет встроенной печати интерфейс, и я не могу его модифицировать или легко связывать с моим собственным кодом.
Пользовательские функции затрудняют воспроизведение прямого кода доступа к данным в Python. Но это необходимо? В общем: почему печать должна воспроизводить логику доступа к данным? Не могу ли я просто использовать вызовы C++ и использовать операторы [] для печати i, j-го элемента? Тот факт, что класс Slice является временным в GDB во время такого запроса, еще больше усложняет это.
Я также довольно новичок в написании сценариев python и GDB. Я попытался взломать примеры для замены доступа к данным с помощью вызовов gdb.execute, но я понятия не имею, как получить доступ к имени объекта из функции to_string, поэтому я могу использовать что-то вроде gdb.execute (??? + '[] + str (i) + ']', False, True).
Интересно, что является самым эффективным способом этого.
Любой может бросить вместе пример, пожалуйста? – takbal