From 43512e6c7007b3cca7b693064e0f1da8e47e154f Mon Sep 17 00:00:00 2001 From: Luuk van Dijk Date: Mon, 28 Mar 2011 17:34:22 +0200 Subject: [PATCH] runtime: fix gdb support for goroutines. in gdb, 'info goroutines' and 'goroutine were crashing because the 'g' and 'm' structures had changed a bit. R=rsc CC=golang-dev https://golang.org/cl/4289077 --- src/pkg/runtime/runtime-gdb.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/src/pkg/runtime/runtime-gdb.py b/src/pkg/runtime/runtime-gdb.py index 68dd8abdc6..08772a431e 100644 --- a/src/pkg/runtime/runtime-gdb.py +++ b/src/pkg/runtime/runtime-gdb.py @@ -215,6 +215,8 @@ class IfacePrinter: return 'string' def to_string(self): + if self.val['data'] == 0: + return 0x0 try: dtype = iface_dtype(self.val) except: @@ -308,15 +310,11 @@ class GoroutinesCmd(gdb.Command): for ptr in linked_list(gdb.parse_and_eval("'runtime.allg'"), 'alllink'): if ptr['status'] == 6: # 'gdead' continue - m = ptr['m'] s = ' ' - if m: - pc = m['sched']['pc'].cast(vp) - sp = m['sched']['sp'].cast(vp) + if ptr['m']: s = '*' - else: - pc = ptr['sched']['pc'].cast(vp) - sp = ptr['sched']['sp'].cast(vp) + pc = ptr['sched']['pc'].cast(vp) + sp = ptr['sched']['sp'].cast(vp) blk = gdb.block_for_pc(long((pc))) print s, ptr['goid'], "%8s" % sts[long((ptr['status']))], blk.function @@ -326,7 +324,7 @@ def find_goroutine(goid): if ptr['status'] == 6: # 'gdead' continue if ptr['goid'] == goid: - return [(ptr['m'] or ptr)['sched'][x].cast(vp) for x in 'pc', 'sp'] + return [ptr['sched'][x].cast(vp) for x in 'pc', 'sp'] return None, None -- 2.50.0