Ich denke, der Titel sagt alles !! :)Umschalten zwischen Remote-KGDB und lokalen DDB innerhalb einer Debugging-Sitzung
Ich würde gerne wissen, ob es tatsächlich eine Möglichkeit gibt, zwischen gdb und ddb beim Debuggen eines Remote-Kernel zu wechseln.
Ich bin schon bei der Eingabeaufforderung gdb (oder besser kgdb). Von hier aus wechsle ich zu lokalen ddb auf der debugged machine ??
Meine Kernel-Konfigurationsdatei enthält bereits options BREAK_TO_DEBUGGER
und ich haben beide GDB und DDB aka konfiguriert: options GDB options DDB
Gemäß der developer's handbook: „Jedes Mal, wenn Sie gdb eingeben, wird der Modus zwischen entfernten GDB und lokalen DDB umgeschaltet werden Um eine nächste Falle sofort zu erzwingen, geben Sie einfach s ein (Schritt). Ihre Host-GDB erhält nun die Kontrolle über den Zielkernel: "
Also habe ich versucht, 'gdb' an der gdb-Eingabeaufforderung zu tippen (witzig : D) und wie erwartet war es ein unerkanntes Kommando. Offensichtlich sollte dieser Befehl an der ddb-Eingabeaufforderung eingegeben werden. Aber meine Frage ist, wie kann ich ddb von einer laufenden Maschine absetzen, deren serielle Ports (wenn auch virtuelle) remote an die KGDB eines anderen Rechners angeschlossen sind? Wenn Remote-GDB zuhört und ich eine Panik mit sysctl debug.kdb.enter=1
erzwinge, fällt es in Remote-KGDB. Wenn es jedoch NICHT zuhört, friert das System einfach ein.
Was ich möchte, ist ddb auf dem lokalen Rechner eingeben. Führen Sie ein Debugging mit diesem aus; Drop zu Remote KGDB für Dinge, die am besten mit KGDB getan werden, dann wechseln Sie zurück zu lokalen DDB, wenn ich fertig bin.
Gibt es eine Möglichkeit, das zu tun? Wenn ja, bitte lassen Sie es mich wissen
'sysctl debug.kdb.available' gibt's ddb gdb' ' sysctl debug.kdb.current' gibt's gdb' ich an der ddb Prompt versucht ctrl-c haben (wenn gdb aktiv war) zu gibt die Kontrolle zurück an GDB, aber ohne Erfolg. Wenn ich mit 'debug.kdb.current' herumspiele, kann ich mein Ziel erreichen? – HighOnMeat
Nicht sicher. es sollte 1 Back-End in der Zeit geben. Übergang von DDB zu GDB ist "gdb" Befehl, Übergang zurück ist, um gdb zu beenden. –
Ich habe das aktuelle Backend mit 'sysctl debug.kdb.current = ddb' in ddb geändert. Dann löste ich eine Panik aus und ich war an der ddb-Eingabeaufforderung. Die Eingabe von 'gdb' verbindet den Rechner mit dem gdb-Backend auf dem Client-Rechner. Aber das Beenden von gdb bringt mich zurück zum Shell-Prompt auf dem Debugger und NICHT zu ddb. So sollte es sein? – HighOnMeat