diff options
Diffstat (limited to 'src/runtime')
| -rw-r--r-- | src/runtime/runtime-gdb.py | 2 | ||||
| -rw-r--r-- | src/runtime/runtime-gdb_test.go | 22 |
2 files changed, 21 insertions, 3 deletions
diff --git a/src/runtime/runtime-gdb.py b/src/runtime/runtime-gdb.py index 9f2ba9f934..c70aea71bb 100644 --- a/src/runtime/runtime-gdb.py +++ b/src/runtime/runtime-gdb.py @@ -60,7 +60,7 @@ class SliceValue: class StringTypePrinter: "Pretty print Go strings." - pattern = re.compile(r'^struct string$') + pattern = re.compile(r'^struct string( \*)?$') def __init__(self, val): self.val = val diff --git a/src/runtime/runtime-gdb_test.go b/src/runtime/runtime-gdb_test.go index 7184120122..7569d07466 100644 --- a/src/runtime/runtime-gdb_test.go +++ b/src/runtime/runtime-gdb_test.go @@ -31,7 +31,10 @@ func main() { mapvar := make(map[string]string,5) mapvar["abc"] = "def" mapvar["ghi"] = "jkl" - fmt.Println("hi") // line 8 + strvar := "abc" + ptrvar := &strvar + fmt.Println("hi") // line 10 + _ = ptrvar } ` @@ -63,7 +66,7 @@ func TestGdbPython(t *testing.T) { got, _ := exec.Command("gdb", "-nx", "-q", "--batch", "-iex", fmt.Sprintf("add-auto-load-safe-path %s/src/runtime", runtime.GOROOT()), - "-ex", "br main.go:8", + "-ex", "br main.go:10", "-ex", "run", "-ex", "echo BEGIN info goroutines\n", "-ex", "info goroutines", @@ -71,6 +74,12 @@ func TestGdbPython(t *testing.T) { "-ex", "echo BEGIN print mapvar\n", "-ex", "print mapvar", "-ex", "echo END\n", + "-ex", "echo BEGIN print strvar\n", + "-ex", "print strvar", + "-ex", "echo END\n", + "-ex", "echo BEGIN print ptrvar\n", + "-ex", "print ptrvar", + "-ex", "echo END\n", filepath.Join(dir, "a.exe")).CombinedOutput() firstLine := bytes.SplitN(got, []byte("\n"), 2)[0] @@ -94,4 +103,13 @@ func TestGdbPython(t *testing.T) { if bl := blocks["print mapvar"]; !printMapvarRe.MatchString(bl) { t.Fatalf("print mapvar failed: %s", bl) } + + strVarRe := regexp.MustCompile(`\Q = "abc"\E$`) + if bl := blocks["print strvar"]; !strVarRe.MatchString(bl) { + t.Fatalf("print strvar failed: %s", bl) + } + + if bl := blocks["print ptrvar"]; !strVarRe.MatchString(bl) { + t.Fatalf("print ptrvar failed: %s", bl) + } } |
