Наилучший вариант — использовать API-интерфейс gdb для Python для создания красивых принтеров для классы броненосцев. Он работает лучше, чем вызов функции C/C++, поскольку он всегда доступен (даже при отладке из основного файла, где нет запущенной программы). Кроме того, нет риска, что компоновщик отбросит функцию, когда она не используется в вашей программе (что сделает ее недоступной при отладке в gdb).
Красивый код принтера загружается (получается) из файла .gdbinit
в вашей домашней папке. Он будет работать в gdb, запущенном в терминале, а также из IDE (при условии, что IDE не избегает загрузки файла .gdbinit
).
В качестве примера предположим, что у вас есть следующие две матрицы
arma::mat m1{{1.1, 2.2, 3},
{ 4, 5, 6},
{ 7, 8, 9},
{ 10, 11, 12},
{ 13, 14, 15},
{ 16, 17, 18}};
arma::cx_mat m2{{1.1 - 1.1j, 2.2 - 7.7j, 3},
{ 4, 5, 6},
{ 7, 8, 9},
{ 10, 11, 12},
{ 13, 14, 15},
{ 16, 17, 18}};
Красивый принтер мог бы показать их как
а>
а>
Обратите внимание, что элементы сложной матрицы m2
отображаются как в прямоугольной, так и в полярной форме (отображение полярной формы можно отключить). Это также лучше работает с остальной частью gdb. Например, gdb позволяет отображать максимальное количество элементов в массиве. Красивый принтер будет уважать это, если он реализован для отображения элементов в виде стандартных массивов в gdb.
Вот так в CLion отображаются матрицы m1
и m2
.
Этот красивый принтер можно получить здесь. Есть несколько других вещей, таких как некоторые xmethods (python повторная реализация некоторых методов C++) и преобразование в массивы numpy.
Отказ от ответственности: я являюсь автором этих красивых принтеров.
person
darcamo
schedule
10.10.2019