提交 bcc4943a 编写于 作者: D Derek Parker

Move breakpointIDCounter to DebuggedProcess struct

上级 d7cb4dca
...@@ -77,13 +77,13 @@ func (dbp *DebuggedProcess) setBreakpoint(tid int, addr uint64) (*BreakPoint, er ...@@ -77,13 +77,13 @@ func (dbp *DebuggedProcess) setBreakpoint(tid int, addr uint64) (*BreakPoint, er
if err != nil { if err != nil {
return nil, fmt.Errorf("could not set hardware breakpoint") return nil, fmt.Errorf("could not set hardware breakpoint")
} }
breakpointIDCounter++ dbp.breakpointIDCounter++
dbp.HWBreakPoints[i] = &BreakPoint{ dbp.HWBreakPoints[i] = &BreakPoint{
FunctionName: fn.Name, FunctionName: fn.Name,
File: f, File: f,
Line: l, Line: l,
Addr: addr, Addr: addr,
ID: breakpointIDCounter, ID: dbp.breakpointIDCounter,
} }
return dbp.HWBreakPoints[i], nil return dbp.HWBreakPoints[i], nil
} }
...@@ -98,14 +98,14 @@ func (dbp *DebuggedProcess) setBreakpoint(tid int, addr uint64) (*BreakPoint, er ...@@ -98,14 +98,14 @@ func (dbp *DebuggedProcess) setBreakpoint(tid int, addr uint64) (*BreakPoint, er
if err != nil { if err != nil {
return nil, err return nil, err
} }
breakpointIDCounter++ dbp.breakpointIDCounter++
dbp.BreakPoints[addr] = &BreakPoint{ dbp.BreakPoints[addr] = &BreakPoint{
FunctionName: fn.Name, FunctionName: fn.Name,
File: f, File: f,
Line: l, Line: l,
Addr: addr, Addr: addr,
OriginalData: originalData, OriginalData: originalData,
ID: breakpointIDCounter, ID: dbp.breakpointIDCounter,
} }
return dbp.BreakPoints[addr], nil return dbp.BreakPoints[addr], nil
} }
......
...@@ -20,17 +20,18 @@ import ( ...@@ -20,17 +20,18 @@ import (
// Struct representing a debugged process. Holds onto pid, register values, // Struct representing a debugged process. Holds onto pid, register values,
// process struct and process state. // process struct and process state.
type DebuggedProcess struct { type DebuggedProcess struct {
Pid int Pid int
Process *os.Process Process *os.Process
Dwarf *dwarf.Data Dwarf *dwarf.Data
GoSymTable *gosym.Table GoSymTable *gosym.Table
FrameEntries *frame.FrameDescriptionEntries FrameEntries *frame.FrameDescriptionEntries
HWBreakPoints [4]*BreakPoint // May need to change, amd64 supports 4 debug registers HWBreakPoints [4]*BreakPoint // May need to change, amd64 supports 4 debug registers
BreakPoints map[uint64]*BreakPoint BreakPoints map[uint64]*BreakPoint
Threads map[int]*ThreadContext Threads map[int]*ThreadContext
CurrentThread *ThreadContext CurrentThread *ThreadContext
running bool breakpointIDCounter int
halt bool running bool
halt bool
} }
type ManualStopError struct{} type ManualStopError struct{}
...@@ -39,10 +40,6 @@ func (mse ManualStopError) Error() string { ...@@ -39,10 +40,6 @@ func (mse ManualStopError) Error() string {
return "Manual stop requested" return "Manual stop requested"
} }
var (
breakpointIDCounter = 0
)
func Attach(pid int) (*DebuggedProcess, error) { func Attach(pid int) (*DebuggedProcess, error) {
dbp, err := newDebugProcess(pid, true) dbp, err := newDebugProcess(pid, true)
if err != nil { if err != nil {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册