Для тех, кто использует QtCreator , вы можете проверить значения из вашей IDE с помощью , расширяющего GDB с помощью Python Debugging Helpers (возможно, другие IDE также поддерживают эту функцию).
Поместите следующий скрипт, например, ~/debugHelpers.py
#!/usr/bin/python
import gdb # gdb.Value()
import dumper # dumper.Children()
def qdump__arma__Mat(d, value):
array = value["mem"]
cols = value["n_cols"]
rows = value["n_rows"]
maxDisplayItems = 50
innerType = d.templateArgument(value.type, 0)
p = gdb.Value(array.cast(innerType.pointer()))
d.putItemCount(cols)
d.putNumChild(cols)
if d.isExpanded():
numDisplayItems = min(maxDisplayItems, cols)
with dumper.Children(d, numChild=cols,
maxNumChild=numDisplayItems,
childType="<column>",
addrBase=p,
addrStep=p.dereference().__sizeof__):
for i in range(0, int(numDisplayItems)):
with dumper.Children(d):
d.putItemCount(rows)
d.putNumChild(rows)
if d.isExpanded():
numDisplayItems = min(maxDisplayItems, rows)
with dumper.Children(d, numChild=rows,
maxNumChild=numDisplayItems,
childType=innerType,
addrBase=p,
addrStep=p.dereference().__sizeof__):
for j in range(0, int(numDisplayItems)):
d.putSubItem(j, p.dereference())
p += 1
И назовите это добавлением этой строки к вашему ~/.gdbinit
:
python exec(open('/<full_path>/debugHelpers.py').read())
или добавьте его из вашей IDE; в QtCreator используйте Инструменты> Параметры> Отладчик> GDB (вкладка)> Дополнительные помощники отладки (внизу).
Этот конкретный скрипт вернет матрицу, упорядоченную по столбцам (естественное расположение памяти в моей архитектуре):
Источники: Написание отладочных визуализаторов для GDB / QtCreator 2.8