aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/runtime/runtime-gdb.py2
-rw-r--r--src/runtime/runtime-gdb_test.go22
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)
+ }
}