Last week I was developing this patch: https://sourceware.org/ml/gdb-patches/2016-08/msg00311.html
It was full of corner cases, so I wrote many tests, and I debugged each test using gdb often.
That let me to do a lot of: make a test, debug it using gdb, and repeat.
Each time I would need to debug gdb I would look for it’s pid using ps, but that was quite repetitive, way too repetitive for an emacs user.
So there’s now a better way with this little bit of elisp:
(defun gdb-test () "Run gdb with the pid of the gdb currectly executing a test" (interactive) (gdb (concat gud-gdb-command-name (format " -p %s" (system-process-pid "gdb.*-nw.*-nx"))))) (defun system-process-pid (regex-str) "Return the pid for a process with args matching regex-str" (dolist (pid (list-system-processes)) (let ((attrs (process-attributes pid))) (if (string-match-p regex-str (cdr (assoc 'args attrs))) (return pid))))) (provide 'custom-lib)
This will find the pid of the gdb under test, assuming that it always has -nw.*-nw it it’s arguments.
So calling M-x gdb-test will start gdb with the pid of the gdb under test et voila 🙂