GDB Mac の場合install が少し面倒くさい (gdb) b 7 Breakpoint 1 at 0x206f: file /.../repos/src/github.com/Kooooya/ground/gdb/01.go, line 7. (gdb) run Starting program: /.../src/github.com/Kooooya/ground/gdb/01 Unable to find Mach task port for process-id 12160: (os/kern) failure (0x5). (please check gdb is codesigned - see taskgated(8)) macOS Sierra でgdb を使う (http://qiita.com/kaityo256/items/d2f7ac7acc42cf2098b2) ↑ のリンクを参考にinstall してみて下さい
(gdb) list (gdb) list line (gdb) l line (gdb) list file.go:line Example: (gdb) l 01.go:8 3 import "fmt" 4 5 func main() { 6 say() 7 } 8 9 func say() { 10 const n = 10000 11 for i := 0; i < n; i++ { 12 fmt.Println(i)}}
(gdb) break line (gdb) b line (gdb) break file.go:line Example: (gdb) b 01.go:8 Note: breakpoint 1 also set at pc 0x208c. Breakpoint 2 at 0x208c: file /.../src/github.com/Kooooya/ground/gdb/01.go, line 8.
(gdb) run (gdb) r Example: (gdb) b 02.go:6 Breakpoint 1 at 0x20f4: file /.../src/github.com/Kooooya/ground/gdb/02.go, line 6. (gdb) run Starting program: /.../src/github.com/Kooooya/ground/gdb/01 [New Thread 0x1403 of process 15902] warning: unhandled dyld version (15) [New Thread 0x1207 of process 15902] [New Thread 0x1503 of process 15902] [New Thread 0x1603 of process 15902] [New Thread 0x1703 of process 15902] Thread 2 hit Breakpoint 1, main.Hoge (i=0) at /.../src/github.com/Kooooya/ground/gdb/02.go:6 6 fmt.Println(i) (gdb)
(gdb) continue (gdb) c Example: (gdb) c Continuing. Thread 2 hit Breakpoint 1, main.Hoge (i=7) at /.../src/github.com/Kooooya/ground/gdb/02.go:6 6 fmt.Println(i) (gdb)
引数のnum は `info breakpoints` で対応する番号 (gdb) d num (gdb) delete num Example: (gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y 0x00000000000020f4 in main.Hoge at /.../src/github.com/Kooooya/ground/gdb/02. breakpoint already hit 9 times (gdb) d 1
変数 (gdb) info variables .... error io.EOF; error io.ErrClosedPipe; error io.ErrNoProgress; .... local 変数 (gdb) info locals i = 987 引数 (gdb) info args i = 987
(gdb) info breakpoints Num Type Disp Enb Address What 1 breakpoint keep y 0x00000000000020f4 in main.Hoge at /.../src/github.com/Kooooya/ground/gdb/02. breakpoint already hit 1 time 2 breakpoint keep y 0x0000000000002097 in main.say at /.../src/github.com/Kooooya/ground/gdb/01.g
(gdb) print var (gdb) p var (gdb) p $len(var) Example: (gdb) p i $5 = 31 (gdb) p &i $6 = (int *) 0xc42003bf18 (gdb) p $len(s) $2 = 11 (gdb) p $cap(s) $1 = 20