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?

as3rdaccount
quelle
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
1
Mögliches Duplikat von Kann ich GDB zum Debuggen eines laufenden Prozesses verwenden?
Ciro Santilli 法轮功 冠状 病 六四 事件 17

Antworten:

122

Probieren Sie eines davon aus:

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

gdb /path/to/exe
(gdb) attach 12271
Angestellt Russisch
quelle
21

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

gdb progname 12271
DrC
quelle
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!

Stephane Rolland
quelle