LEFT | RIGHT |
1 // Copyright 2014 The Go Authors. All rights reserved. | 1 // Copyright 2014 The Go Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style | 2 // Use of this source code is governed by a BSD-style |
3 // license that can be found in the LICENSE file. | 3 // license that can be found in the LICENSE file. |
4 | 4 |
5 // Package program provides the portable interface to a program being debugged. | 5 // Package program provides the portable interface to a program being debugged. |
6 package program | 6 package program |
7 | 7 |
8 import ( | 8 import ( |
9 "io" | 9 "io" |
10 ) | 10 ) |
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
56 Kill() (Status, error) | 56 Kill() (Status, error) |
57 | 57 |
58 // Breakpoint sets a breakpoint at the specified address. | 58 // Breakpoint sets a breakpoint at the specified address. |
59 // When the target binary is re-run, breakpoints are | 59 // When the target binary is re-run, breakpoints are |
60 // automatically re-established in the new process by | 60 // automatically re-established in the new process by |
61 // re-evaluating the address. | 61 // re-evaluating the address. |
62 // Address syntax: | 62 // Address syntax: |
63 // "main.main" Start of function | 63 // "main.main" Start of function |
64 // "main.go:23" Line number | 64 // "main.go:23" Line number |
65 // (more to follow; may want an expression grammar) | 65 // (more to follow; may want an expression grammar) |
66 » // It is an OK if two breakpoints evaluate to the same PC. (TODO: verify
.) | 66 » // It is OK if two breakpoints evaluate to the same PC. (TODO: verify.) |
67 Breakpoint(address string) error | 67 Breakpoint(address string) error |
68 | 68 |
69 // DeleteBreakpoint removes the breakpoint at the specified | 69 // DeleteBreakpoint removes the breakpoint at the specified |
70 // address. | 70 // address. |
71 DeleteBreakpoint(address string) error | 71 DeleteBreakpoint(address string) error |
72 | 72 |
73 // Eval evaluates the expression (typically an address) and returns | 73 // Eval evaluates the expression (typically an address) and returns |
74 // its string representation. | 74 // its string representation. |
75 Eval(expr string) (string, error) | 75 Eval(expr string) (string, error) |
76 } | 76 } |
77 | 77 |
78 // The File interface provides access to file-like resources in the program. | 78 // The File interface provides access to file-like resources in the program. |
79 // It implements only ReaderAt and WriterAt, not Reader and Writer, because | 79 // It implements only ReaderAt and WriterAt, not Reader and Writer, because |
80 // random access is a far more common pattern for things like symbol tables, | 80 // random access is a far more common pattern for things like symbol tables, |
81 // and because enormous address space of virtual memory makes routines | 81 // and because enormous address space of virtual memory makes routines |
82 // like io.Copy dangerous. | 82 // like io.Copy dangerous. |
83 type File interface { | 83 type File interface { |
84 io.ReaderAt | 84 io.ReaderAt |
85 io.WriterAt | 85 io.WriterAt |
86 io.Closer | 86 io.Closer |
87 } | 87 } |
88 | 88 |
89 type Status struct { | 89 type Status struct { |
90 // TBD | 90 // TBD |
91 } | 91 } |
LEFT | RIGHT |