Gibt es also eine Möglichkeit, die Ausgabe einer gdb.execute in GDB 7.1 zu erhalten?
Nein.
Am besten sorgen Sie dafür, dass GDB-7.3 verfügbar ist. Da GDB normalerweise keine gemeinsam genutzten Bibliotheken verwendet (außer libc und vielleicht libpython), können Sie einfach die gdb-Binärdatei mit Ihrem Skript kopieren. Das ist eine viel einfachere und wartungsfreundlichere Lösung als die von Ihnen vorgeschlagene Alternative.
Sie können in eine Datei schreiben und dann die Datei lesen, zum Beispiel:
os.system("rm tmp.txt")
gdb.execute("set logging file tmp.txt")
gdb.execute("set logging on")
mainsec=gdb.execute("info proc mappings")
gdb.execute("set logging off")
mainsec = open("tmp.txt").read()
Die alte Version von gdb.execute war jedoch weit überlegen.
FYI jetzt (getestet mit gdb 8.1) können Sie den to_string
verwenden Parameter
https://sourceware.org/gdb/onlinedocs/gdb/Basic-Python.html
gdb.execute (command [, from_tty [, to_string]])
Standardmäßig wird jede vom Befehl erzeugte Ausgabe an die Standardausgabe von GDB gesendet (und an die Protokollausgabe, wenn die Protokollierung aktiviert ist). Wenn der to_string-Parameter True ist, wird die Ausgabe von gdb.execute erfasst und als Zeichenfolge zurückgegeben. Der Standardwert ist False, in diesem Fall ist der Rückgabewert None.