From: Willy Tarreau Date: Wed, 27 May 2026 16:50:11 +0000 (+0200) Subject: DEV: dev/gdb: add simple thread dump X-Git-Tag: v3.4.0~22 X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=ca5f6cd053cb180b146447b245caed852c394fcc;p=thirdparty%2Fhaproxy.git DEV: dev/gdb: add simple thread dump The thread_dump function dumps the list of known threads and a few info on them (pointer, current run queue, flags etc). This should help more easily spot a particular one and find stuck ones. E.g: (gdb) thread_dump Tid 0: pth=0x7ffff7e797c0 mono=2222322327950732 now_ms=4294947291 fl=0x38 rq=-1 cq=0 current=(nil) Tid 1: pth=0x7ffff78d8640 mono=2222322327928085 now_ms=4294947291 fl=0x38 rq=-1 cq=0 current=(nil) Tid 2: pth=0x7ffff6b7e640 mono=2222322327927150 now_ms=4294947291 fl=0x38 rq=-1 cq=0 current=(nil) Tid 3: pth=0x7ffff637d640 mono=2222322327924878 now_ms=4294947291 fl=0x38 rq=-1 cq=0 current=(nil) Tid 4: pth=0x7ffff5b7c640 mono=2222322327925676 now_ms=4294947291 fl=0x38 rq=-1 cq=0 current=(nil) Tid 5: pth=0x7ffff537b640 mono=2222322327929524 now_ms=4294947291 fl=0x38 rq=-1 cq=0 current=(nil) Tid 6: pth=0x7ffff4b7a640 mono=2222322327926817 now_ms=4294947291 fl=0x38 rq=-1 cq=0 current=(nil) Tid 7: pth=0x7fffdffff640 mono=2222322327947960 now_ms=4294947291 fl=0x38 rq=-1 cq=0 current=(nil) --- diff --git a/dev/gdb/thread.gdb b/dev/gdb/thread.gdb new file mode 100644 index 000000000..41b5712f0 --- /dev/null +++ b/dev/gdb/thread.gdb @@ -0,0 +1,10 @@ +# list info about current threads (ptr, now_ms, queue, current) +define thread_dump + set $t = 0 + while $t < $g.nbthread + set $i = $ti[$t].pth_id + set $h = $tc[$t].current + printf "Tid %4d: pth=%p mono=%llu now_ms=%u fl=0x%02x rq=%d cq=%d current=%p\n", $t, $i, $tc[$t].curr_mono_time, (unsigned)(($tc[$t].curr_mono_time + now_offset)/1000000), $tc[$t].flags, $tc[$t].current_queue, $tc[$t].rq_total, $h + set $t = $t + 1 + end +end