Ich habe ein Linux-C-Programm mit dem internen Debugger von CLion (unter Linux gdb) debuggt. Das Programm hat einen untergeordneten Prozess gegabelt, der an dem von mir festgelegten Haltepunkt unterbrochen werden sollte. Aber der Debugger hörte hier nicht auf, selbst wenn ich ihn eingegeben hatte set follow-fork-mode child
im GDB-Panel. Wie kann ich das mit CLion realisieren?
So debuggen Sie einen gegabelten untergeordneten Prozess mit CLion
DYS
Ich folgte der Antwort von @MarkusParker, aber statt set auto-load safe-path /
ich benutzte set detach-on-fork off
um die Trennung vom untergeordneten Prozess zu verhindern. Diese Anleitung funktioniert bei mir:
-
Setzen Sie einen Unterbrechungspunkt am Anfang Ihres Programms (dh des übergeordneten Programms, nicht des untergeordneten Programms).
-
Starten Sie das Programm im Debugger.
-
Gehen Sie in clion zur Debugger-Konsole (Tab mit der Bezeichnung gdb) und geben Sie ein
set follow-fork-mode child
undset detach-on-fork off
. -
Fahren Sie mit dem Debuggen fort.
-
Da dies eine beliebte Antwort ist, können Sie diese Befehle nicht jedes Mal eingeben, wenn Sie diese Datei erstellen
~/.gdbinit
und fügen Sie diese Befehle darin ein (jeweils in einer separaten Zeile). Dies wird wahrscheinlich nur wirksam, wenn Sie die gdb Ihres Systems verwenden.– JAAAY
2. September um 12:30 Uhr
Verwenden Sie die GDB-Registerkarte des Debuggers:
Geben Sie set follow-fork-mode child ein und deaktivieren Sie den Detach-on-Fork-Modus
laut diesem Link Debugger: Unterstützung von Zielen mit mehreren Prozessen
Es wird in Clion immer noch nicht unterstützt. set detach-on-fork off
fügt dem Frame einen Thread hinzu, aber Sie können den untergeordneten Prozess immer noch nicht steuern. Und Clion “behandelt das Beenden eines der Untergebenen als Ende der Debugging-Sitzung, obwohl andere noch laufen”.
Ich denke, es gibt das gleiche Problem mit vscode.
Stellen Sie sicher, dass Sie eingestellt sind set follow-fork-mode child
vor der Gabelung.
Mögliches Duplikat von How set follow-fork-mode as child in debuger using CMake
– Yoav Feuerstein
21. Januar 2017 um 11:49 Uhr