Ich versuche derzeit einen Debugging Helper für den QtCreator zu schreiben, da das debuggen ohne ein wenig lästig ist. Als Anleitung dazu habe ich das hier verwendet. Ich scheitere aber trotz Anleitung kläglich, es passiert einfach gar nichts. Egal wohin ich meine qdump__String hineinschreibe, es wird keine Warnung angezeigt und der Output im Debugger ist so wie davor, nicht lesbar. Außerdem habe ich versucht zwischendurch den Debugger jeweils neuzustarten da ich keine Ahnung habe, wann der das Python Skript lädt.
Den Code oben habe ich in eine ~/.gdbinit geschrieben und sie als custom location in den Einstellungen angegeben. Außerdem noch versucht habe ich es mit /usr/share/qtcreator/gdbmacros/dumper.py und /usr/share/qtcreator/gdbmacros/gdbmacros.py, alles ohne irgendein Ergebnis. Nicht einmal eine Fehlermeldung wegen Syntaxfehlern, mit denen ich eigentlich fest rechne. Ich habe noch nie in Python programmiert, deswegen ist das obere ziemlich sicher irgendwo fehlerhaft. Aber damit könnte ich mich dann gemeinsam mit google auseinandersetzen, nur wird mein Code scheinbar nicht einmal ausgeführt.
Falls sich jemand fragt wie ich ohne Python-Kentnisse das zusammengeschustert habe: Copy-Paste von qdump_QVector. Wenn jemand einfach nur einen Fehler im Skript findet wäre ich auch schon sehr dankbar. Zur Orientierung gibt es jetzt noch die passende Klasse:
Herzlichen Dank,
benediktibk
Code:
def qdump__String(d, value):
warn('loaded extra dumpers')
d_ptr = value["d"]
p_ptr = value["p"]
capacity = d_ptr["m_capacity"]
size = d_ptr["m_size"]
check(0 <= size and size <= capacity and capacity <= 1000)
checkRef(d_ptr["ref"])
innerType = templateArgument(value.type, 0)
d.putItemCount(size)
d.putNumChild(size)
if d.isExpanded():
p = gdb.Value(p_ptr["m_array"]).cast(innerType.pointer())
charPtr = lookupType("char").pointer()
d.putField("size", size)
with Children(d, size, maxNumChild=2000, childType=innerType, addrBase=p,
addrStep=(p+1).cast(charPtr) - p.cast(charPtr)):
for i in d.childRange():
d.putSubItem(i, p.dereference())
p += 1
Den Code oben habe ich in eine ~/.gdbinit geschrieben und sie als custom location in den Einstellungen angegeben. Außerdem noch versucht habe ich es mit /usr/share/qtcreator/gdbmacros/dumper.py und /usr/share/qtcreator/gdbmacros/gdbmacros.py, alles ohne irgendein Ergebnis. Nicht einmal eine Fehlermeldung wegen Syntaxfehlern, mit denen ich eigentlich fest rechne. Ich habe noch nie in Python programmiert, deswegen ist das obere ziemlich sicher irgendwo fehlerhaft. Aber damit könnte ich mich dann gemeinsam mit google auseinandersetzen, nur wird mein Code scheinbar nicht einmal ausgeführt.
Falls sich jemand fragt wie ich ohne Python-Kentnisse das zusammengeschustert habe: Copy-Paste von qdump_QVector. Wenn jemand einfach nur einen Fehler im Skript findet wäre ich auch schon sehr dankbar. Zur Orientierung gibt es jetzt noch die passende Klasse:
Code:
class String
{
...
protected:
unsigned int m_capacity;
unsigned int m_size;
char *m_array;
};
Herzlichen Dank,
benediktibk