So hängen Sie einen Prozess in gdb an


72

Ich habe ein einfaches C-Programm, das einen Prozess abspaltet und dann eine ausführbare Datei ausführt.

Ich möchte den untergeordneten Prozess an gdb anhängen.

Ich führe das Hauptprogramm in einer Konsole aus und öffne eine andere Konsole, um die PID des untergeordneten Prozesses zu finden. Dann starte ich gdb mit dem folgenden Befehl:

gdb attach 12271

Wo 12271ist die untergeordnete Prozess-ID, aber das Anhängen schlägt fehl mit:

No such file or directory.

Irgendeine Idee warum?


Ich denke nicht, dass Anhängen ein Befehlszeilenargument ist. Sie können es verwenden, sobald gdb bereits ausgeführt wird. Dieser Typ hat ein gutes Tutorial: dirac.org/linux/gdb/06-Debugging_A_Running_Process.php
thang

Antworten:


122

Probieren Sie eines davon aus:

gdb -p 12271
gdb /path/to/exe 12271

gdb /path/to/exe
(gdb) attach 12271

21

Das erste Argument sollte der Pfad zum ausführbaren Programm sein. Damit

gdb progname 12271

7

Mit einer laufenden Instanz myExecutableNameeiner PID 15073:

Tab - Taste zweimal nach $ gdb myExecuin der Befehlszeile wird automatisch autocompletes zu:

$ gdb myExecutableName 15073

und wird gdb an diesen Prozess anhängen. Das ist schön!

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.