I have a process that is called by another process which is called by another process and so on ad nauseum. It's a child process in a long tool chain.
This process is crashing.
I would like to catch this process in gdb to understand why it's crashing. However, the only way I can think of is:
ps -C <name process I want to catch>
and get the PID.This is cumbersome but usually does the job. The problem is that the current failure runs very quickly, and by the time I capture the PID and launch gdb, it's already passed the failure point.
I would like to launch gdb and instead of:
(gdb) attach <pid>
I would like to do:
(gdb) attach <process name when it launches>
Is there any way to do this?
I am using gdb 7.1 on linux
2. Attaching GDB to a Running Process. Attaching GDB to a process pauses it, and the user can issue GDB commands before continuing its execution.
Just run a program with s few threads, run gdb and before running attach PROCESS_PID run strace in another console. You must see ptrace (PTRACE_ATTACH) for each thread. Show activity on this post. Show activity on this post.
When you have finished debugging the attached process, you can use the detach command to release it from GDB control. Detaching the process continues its execution. After the detach command, that process and GDB become completely independent once more, and you are ready to attach another process or start one with run .
Here is my script called gdbwait:
#!/bin/sh progstr=$1 progpid=`pgrep -o $progstr` while [ "$progpid" = "" ]; do progpid=`pgrep -o $progstr` done gdb -ex continue -p $progpid
Usage:
gdbwait my_program
Sure it can be written nicer but Bourne shell script syntax is painful for me so if it works then I leave it alone. :) If the new process launches and dies too quick, add 1 second delay in your own program for debugging ...
You can attach to a parent process and set follow-fork-mode child. This will make gdb debug child process instead of parent after forking. Also catch fork will be useful. This will make gdb stop after each fork. See docs.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With