Advertisement
Guest User

Untitled

a guest
Mar 27th, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.35 KB | None | 0 0
  1. package target
  2.  
  3. import (
  4. "debug/gosym"
  5. "fmt"
  6. "go/ast"
  7. "io"
  8. "time"
  9.  
  10. "github.com/derekparker/delve/pkg/proc"
  11. )
  12.  
  13. type Tracer struct {
  14. Target Interface
  15.  
  16. Out io.Writer
  17. }
  18.  
  19. func (t *Tracer) Pid() int {
  20. r := t.Target.Pid()
  21. fmt.Fprintf(t.Out, "[trace] Pid() -> %d\n", r)
  22. return r
  23. }
  24.  
  25. func (t *Tracer) Exited() bool {
  26. r := t.Target.Exited()
  27. fmt.Fprintf(t.Out, "[trace] Exited() -> %v\n", r)
  28. return r
  29. }
  30.  
  31. func (t *Tracer) Running() bool {
  32. r := t.Target.Running()
  33. fmt.Fprintf(t.Out, "[trace] Running() -> %v\n", r)
  34. return r
  35. }
  36.  
  37. func (t *Tracer) LastModified() time.Time {
  38. r := t.Target.LastModified()
  39. fmt.Fprintf(t.Out, "[trace] LastModified() -> %v\n", r)
  40. return r
  41. }
  42.  
  43. func (t *Tracer) Sources() map[string]*gosym.Obj {
  44. r := t.Target.Sources()
  45. fmt.Fprintf(t.Out, "[trace] Sources() -> %v\n", r)
  46. return r
  47. }
  48.  
  49. func (t *Tracer) FindFileLocation(fileName string, lineNumber int) (uint64, error) {
  50. r, err := t.Target.FindFileLocation(fileName, lineNumber)
  51. fmt.Fprintf(t.Out, "[trace] FindFileLocation(%s, %d) -> (%d, %v)\n",
  52. fileName, lineNumber, r, err)
  53. return r, err
  54. }
  55.  
  56. func (t *Tracer) FindFunctionLocation(funcName string, firstLine bool, lineOffset int) (uint64, error) {
  57. r, err := t.Target.FindFunctionLocation(funcName, firstLine, lineOffset)
  58. fmt.Fprintf(t.Out, "[trace] FindFunctionLocation(%s, %v, %d) -> (%d, %v)\n",
  59. funcName, firstLine, lineOffset, r, err)
  60. return r, err
  61. }
  62.  
  63. func (t *Tracer) Funcs() []gosym.Func {
  64. r := t.Target.Funcs()
  65. fmt.Fprintf(t.Out, "[trace] Funcs() -> (%v)\n", r)
  66. return r
  67. }
  68.  
  69. func (t *Tracer) Types() ([]string, error) {
  70. r, err := t.Target.Types()
  71. fmt.Fprintf(t.Out, "[trace] Types() -> (%v, %v)\n", r, err)
  72. return r, err
  73. }
  74.  
  75. func (t *Tracer) PCToLine(p uint64) (string, int, *gosym.Func) {
  76. r1, r2, r3 := t.Target.PCToLine(p)
  77. fmt.Fprintf(t.Out, "[trace] PCToLine(%d) -> (%s, %d, %v)\n", p, r1, r2, r3)
  78. return r1, r2, r3
  79. }
  80.  
  81. func (t *Tracer) FirstPCAfterPrologue(fn *gosym.Func, sameline bool) (uint64, error) {
  82. r, err := t.Target.FirstPCAfterPrologue(fn, sameline)
  83. fmt.Fprintf(t.Out, "[trace] FirstPCAfterPrologue(%v, %v) -> (%d, %v)\n",
  84. fn, sameline, r, err)
  85. return r, err
  86. }
  87.  
  88. func (t *Tracer) Threads() map[int]*proc.Thread {
  89. r := t.Target.Threads()
  90. fmt.Fprintf(t.Out, "[trace] Threads() -> %v\n", r)
  91. return r
  92. }
  93.  
  94. func (t *Tracer) CurrentThread() *proc.Thread {
  95. r := t.Target.CurrentThread()
  96. fmt.Fprintf(t.Out, "[trace] CurrentThread() -> %v\n", r)
  97. return r
  98. }
  99.  
  100. func (t *Tracer) GoroutinesInfo() ([]*proc.G, error) {
  101. r, err := t.Target.GoroutinesInfo()
  102. fmt.Fprintf(t.Out, "[trace] GoroutinesInfo() -> (%v, %v)\n", r, err)
  103. return r, err
  104. }
  105.  
  106. func (t *Tracer) SelectedGoroutine() *proc.G {
  107. r := t.Target.SelectedGoroutine()
  108. fmt.Fprintf(t.Out, "[trace] SelectedGoroutine() -> %v\n", r)
  109. return r
  110. }
  111.  
  112. func (t *Tracer) FindGoroutine(g int) (*proc.G, error) {
  113. r, err := t.Target.FindGoroutine(g)
  114. fmt.Fprintf(t.Out, "[trace] FindGoroutine(%d) -> (%v, %v)\n", g, r, err)
  115. return r, err
  116. }
  117.  
  118. func (t *Tracer) Continue() error {
  119. r := t.Target.Continue()
  120. fmt.Fprintf(t.Out, "[trace] Continue() -> %v\n", r)
  121. return r
  122. }
  123.  
  124. func (t *Tracer) Next() error {
  125. r := t.Target.Next()
  126. fmt.Fprintf(t.Out, "[trace] Next() -> %v\n", r)
  127. return r
  128. }
  129.  
  130. func (t *Tracer) Step() error {
  131. r := t.Target.Step()
  132. fmt.Fprintf(t.Out, "[trace] Step() -> %v\n", r)
  133. return r
  134. }
  135.  
  136. func (t *Tracer) StepOut() error {
  137. r := t.Target.StepOut()
  138. fmt.Fprintf(t.Out, "[trace] StepOut() -> %v\n", r)
  139. return r
  140. }
  141.  
  142. func (t *Tracer) StepInstruction() error {
  143. r := t.Target.StepInstruction()
  144. fmt.Fprintf(t.Out, "[trace] StepInstruction() -> %v\n", r)
  145. return r
  146. }
  147.  
  148. func (t *Tracer) SwitchThread(a int) error {
  149. r := t.Target.SwitchThread(a)
  150. fmt.Fprintf(t.Out, "[trace] SwitchThread(%d) -> %v\n", a, r)
  151. return r
  152. }
  153.  
  154. func (t *Tracer) SwitchGoroutine(a int) error {
  155. r := t.Target.SwitchGoroutine(a)
  156. fmt.Fprintf(t.Out, "[trace] SwitchGoroutine(%d) -> %v\n", a, r)
  157. return r
  158. }
  159. func (t *Tracer) RequestManualStop() error {
  160. r := t.Target.RequestManualStop()
  161. fmt.Fprintf(t.Out, "[trace] RequestManualStop() -> %v\n", r)
  162. return r
  163. }
  164.  
  165. func (t *Tracer) Halt() error {
  166. r := t.Target.Halt()
  167. fmt.Fprintf(t.Out, "[trace] Halt() -> %v\n", r)
  168. return r
  169. }
  170.  
  171. func (t *Tracer) Kill() error {
  172. r := t.Target.Kill()
  173. fmt.Fprintf(t.Out, "[trace] Kill() -> %v\n", r)
  174. return r
  175. }
  176.  
  177. func (t *Tracer) Detach(a bool) error {
  178. r := t.Target.Detach(a)
  179. fmt.Fprintf(t.Out, "[trace] Detach(%v) -> %v\n", a, r)
  180. return r
  181. }
  182.  
  183. func (t *Tracer) Breakpoints() map[uint64]*proc.Breakpoint {
  184. r := t.Target.Breakpoints()
  185. fmt.Fprintf(t.Out, "[trace] Breakpoints() -> %v\n", r)
  186. return r
  187. }
  188.  
  189. func (t *Tracer) SetBreakpoint(addr uint64, kind proc.BreakpointKind, cond ast.Expr) (*proc.Breakpoint, error) {
  190. r, err := t.Target.SetBreakpoint(addr, kind, cond)
  191. fmt.Fprintf(t.Out, "[trace] SetBreakpoint(%x, %v, %v) -> (%v, %v)\n",
  192. addr, kind, cond, r, err)
  193. return r, err
  194. }
  195.  
  196. func (t *Tracer) ClearBreakpoint(addr uint64) (*proc.Breakpoint, error) {
  197. r, err := t.Target.ClearBreakpoint(addr)
  198. fmt.Fprintf(t.Out, "[trace] ClearBreakpoint(%x) -> (%v, %v)\n", addr, r, err)
  199. return r, err
  200. }
  201.  
  202. func (t *Tracer) ClearInternalBreakpoints() error {
  203. r := t.Target.ClearInternalBreakpoints()
  204. fmt.Fprintf(t.Out, "[trace] ClearInternalBreakpoints() -> %v\n", r)
  205. return r
  206. }
  207.  
  208. func (t *Tracer) ConvertEvalScope(gid, frame int) (*proc.EvalScope, error) {
  209. r, err := t.Target.ConvertEvalScope(gid, frame)
  210. fmt.Fprintf(t.Out, "[trace] ConvertEvalScope(%d, %d) -> (%v, %v)\n",
  211. gid, frame, r, err)
  212. return r, err
  213. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement