diff --git a/proctl/breakpoints_linux_amd64.go b/proctl/breakpoints_linux_amd64.go index f78bf7fedf7e22da0a00a1e1502fe9bbf0bf9183..81a9c089d662d780bcfef30cc1c1977e3cc79907 100644 --- a/proctl/breakpoints_linux_amd64.go +++ b/proctl/breakpoints_linux_amd64.go @@ -77,13 +77,13 @@ func (dbp *DebuggedProcess) setBreakpoint(tid int, addr uint64) (*BreakPoint, er if err != nil { return nil, fmt.Errorf("could not set hardware breakpoint") } - breakpointIDCounter++ + dbp.breakpointIDCounter++ dbp.HWBreakPoints[i] = &BreakPoint{ FunctionName: fn.Name, File: f, Line: l, Addr: addr, - ID: breakpointIDCounter, + ID: dbp.breakpointIDCounter, } return dbp.HWBreakPoints[i], nil } @@ -98,14 +98,14 @@ func (dbp *DebuggedProcess) setBreakpoint(tid int, addr uint64) (*BreakPoint, er if err != nil { return nil, err } - breakpointIDCounter++ + dbp.breakpointIDCounter++ dbp.BreakPoints[addr] = &BreakPoint{ FunctionName: fn.Name, File: f, Line: l, Addr: addr, OriginalData: originalData, - ID: breakpointIDCounter, + ID: dbp.breakpointIDCounter, } return dbp.BreakPoints[addr], nil } diff --git a/proctl/proctl.go b/proctl/proctl.go index 8a8ac893caf3e3ceb4f5ce3a979a54355205fde1..096d600ea9d18a82ef03fd9686d6d6bed6aec1f6 100644 --- a/proctl/proctl.go +++ b/proctl/proctl.go @@ -20,17 +20,18 @@ import ( // Struct representing a debugged process. Holds onto pid, register values, // process struct and process state. type DebuggedProcess struct { - Pid int - Process *os.Process - Dwarf *dwarf.Data - GoSymTable *gosym.Table - FrameEntries *frame.FrameDescriptionEntries - HWBreakPoints [4]*BreakPoint // May need to change, amd64 supports 4 debug registers - BreakPoints map[uint64]*BreakPoint - Threads map[int]*ThreadContext - CurrentThread *ThreadContext - running bool - halt bool + Pid int + Process *os.Process + Dwarf *dwarf.Data + GoSymTable *gosym.Table + FrameEntries *frame.FrameDescriptionEntries + HWBreakPoints [4]*BreakPoint // May need to change, amd64 supports 4 debug registers + BreakPoints map[uint64]*BreakPoint + Threads map[int]*ThreadContext + CurrentThread *ThreadContext + breakpointIDCounter int + running bool + halt bool } type ManualStopError struct{} @@ -39,10 +40,6 @@ func (mse ManualStopError) Error() string { return "Manual stop requested" } -var ( - breakpointIDCounter = 0 -) - func Attach(pid int) (*DebuggedProcess, error) { dbp, err := newDebugProcess(pid, true) if err != nil {