Ich versuche, eine GDB-Sitzung mithilfe des --command
Flags zu automatisieren . Ich versuche, einen Haltepunkt für eine Funktion in einer gemeinsam genutzten Bibliothek festzulegen (das Unix-Äquivalent einer DLL). Meine cmds.gdb sieht folgendermaßen aus:
set args /home/shlomi/conf/bugs/kde/font-break.txt
b IA__FcFontMatch
r
Ich erhalte jedoch Folgendes:
shlomi: ~ / progs / bugs-external / kde / font-brechend $ gdb --command = cmds.gdb ... GNU gdb 6.8-2mdv2009.0 (Mandriva Linux Release 2009.0) Copyright (C) 2008 Freie Software Foundation, Inc. Lizenz GPLv3 +: GNU GPL Version 3 oder höher Dies ist freie Software: Sie können sie ändern und weitergeben. Es gibt keine Garantie, soweit dies gesetzlich zulässig ist. Geben Sie "Kopieren anzeigen" ein und "Garantie anzeigen" für Details. Diese GDB wurde als "i586-mandriva-linux-gnu" konfiguriert ... (Keine Debugging-Symbole gefunden) Funktion "IA__FcFontMatch" nicht definiert. Haltepunkt beim zukünftigen Laden der gemeinsam genutzten Bibliothek anstehen lassen? (y oder [n]) [antwortete N; Eingabe nicht vom Terminal]
Der Haltepunkt wird also doch nicht gesetzt. Wie kann ich festlegen, dass standardmäßig "y" geantwortet wird, um Haltepunkte für das bevorstehende Laden zukünftiger gemeinsam genutzter Bibliotheken festzulegen?
Ich erinnere mich, dass ich etwas tun konnte, mich aber nicht erinnern kann, was.
Antworten:
Ich antworte mir selbst und möchte die Antwort geben, die mir jemand im IRC gegeben hat:
Wenn Sie also den anstehenden Haltepunkt festlegen, ist dies der Trick. es wird verwendet
cmds.gdb
wie zquelle
Program received signal SIGILL, Illegal instruction
. Ich beziehe Haltepunkte aus einer Datei und habeset breakpoint pending on
seitdem einige meiner Haltepunkte in einer Bibliothek, die das Programm lädt. Wenn ich Haltepunkte manuell hinzufüge, liegt kein Fehler vor. Hat noch jemand ein ähnliches Problem?OT: Im Terminal würde es so aussehen, Caja in einer Zeile zu debuggen:
quelle
-ex
hat bei mir nicht funktioniert. Ich musste die Befehle in eine tmp-Datei einfügen und anrufen mit:gdb -x /tmp/gdb.commands myexecutible
Ohne Symbole.
quelle