Skip to content

Commit 59936a7

Browse files
Addressing review comments on Callback field, using BreakpointExistsError
1 parent c18506f commit 59936a7

File tree

5 files changed

+20
-21
lines changed

5 files changed

+20
-21
lines changed

pkg/proc/breakpoints.go

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,23 +108,22 @@ type Breaklet struct {
108108
// the return value will determine if the breaklet should be considered
109109
// active.
110110
// The callback can have side-effects.
111-
Callback func(th Thread, p *Target) (bool, error)
111+
callback func(th Thread, p *Target) (bool, error)
112112

113113
// For WatchOutOfScopeBreakpoints and StackResizeBreakpoints the watchpoint
114114
// field contains the watchpoint related to this out of scope sentinel.
115115
watchpoint *Breakpoint
116-
117116
}
118117

119118
// SetCallBack sets the call back field, this was primarily added to prevent exporting callback field
120119
func (B *Breaklet) SetCallBack(callback DynCallFn) {
121-
B.Callback = callback
120+
B.callback = callback
122121
}
122+
123123
// BreakpointKind determines the behavior of delve when the
124124
// breakpoint is reached.
125125
type BreakpointKind uint16
126126

127-
128127
const (
129128
// UserBreakpoint is a user set breakpoint
130129
UserBreakpoint BreakpointKind = (1 << iota)
@@ -347,9 +346,9 @@ func (bpstate *BreakpointState) checkCond(tgt *Target, breaklet *Breaklet, threa
347346
}
348347

349348
if active {
350-
if breaklet.Callback != nil {
349+
if breaklet.callback != nil {
351350
var err error
352-
active, err = breaklet.Callback(thread, tgt)
351+
active, err = breaklet.callback(thread, tgt)
353352
if err != nil && bpstate.CondError == nil {
354353
bpstate.CondError = err
355354
}

pkg/proc/stackwatch.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func (t *Target) setStackWatchBreakpoints(scope *EvalScope, watchpoint *Breakpoi
6060
deferbreaklet := deferbp.Breaklets[len(deferbp.Breaklets)-1]
6161
deferbreaklet.checkPanicCall = true
6262
deferbreaklet.watchpoint = watchpoint
63-
deferbreaklet.Callback = woos
63+
deferbreaklet.callback = woos
6464
}
6565

6666
retbp, err := t.SetBreakpoint(0, retframe.Current.PC, WatchOutOfScopeBreakpoint, retFrameCond)
@@ -70,7 +70,7 @@ func (t *Target) setStackWatchBreakpoints(scope *EvalScope, watchpoint *Breakpoi
7070

7171
retbreaklet := retbp.Breaklets[len(retbp.Breaklets)-1]
7272
retbreaklet.watchpoint = watchpoint
73-
retbreaklet.Callback = woos
73+
retbreaklet.callback = woos
7474

7575
if recorded, _ := t.recman.Recorded(); recorded && retframe.Current.Fn != nil {
7676
// Must also set a breakpoint on the call instruction immediately
@@ -88,7 +88,7 @@ func (t *Target) setStackWatchBreakpoints(scope *EvalScope, watchpoint *Breakpoi
8888
}
8989
retbreaklet2 := retbp2.Breaklets[len(retbp.Breaklets)-1]
9090
retbreaklet2.watchpoint = watchpoint
91-
retbreaklet2.Callback = woos
91+
retbreaklet2.callback = woos
9292
break
9393
}
9494
}
@@ -111,7 +111,7 @@ func (t *Target) setStackWatchBreakpoints(scope *EvalScope, watchpoint *Breakpoi
111111

112112
rszbreaklet := rszbp.Breaklets[len(rszbp.Breaklets)-1]
113113
rszbreaklet.watchpoint = watchpoint
114-
rszbreaklet.Callback = func(th Thread, _ *Target) (bool, error) {
114+
rszbreaklet.callback = func(th Thread, _ *Target) (bool, error) {
115115
adjustStackWatchpoint(t, th, watchpoint)
116116
return false, nil // we never want this breakpoint to be shown to the user
117117
}

pkg/proc/target.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ func (t *Target) createPluginOpenBreakpoint() {
403403
if err != nil {
404404
t.BinInfo().logger.Errorf("could not set plugin.Open breakpoint: %v", err)
405405
} else {
406-
bp.Breaklets[len(bp.Breaklets)-1].Callback = t.pluginOpenCallback
406+
bp.Breaklets[len(bp.Breaklets)-1].callback = t.pluginOpenCallback
407407
}
408408
}
409409
}

pkg/proc/target_exec.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -906,7 +906,7 @@ func next(dbp *Target, stepInto, inlinedStepOut bool) error {
906906
bp, err := dbp.SetBreakpoint(0, rangeFrames[1].Call.PC, NextBreakpoint, astutil.And(sameGCond, frameoffCondition(&rangeFrames[1])))
907907
if err == nil {
908908
bplet := bp.Breaklets[len(bp.Breaklets)-1]
909-
bplet.Callback = func(th Thread, p *Target) (bool, error) {
909+
bplet.callback = func(th Thread, p *Target) (bool, error) {
910910
rangeFrameInactivateNextBreakpoints(p, rangeFrames[0].Call.Fn)
911911
return false, nil
912912
}
@@ -964,7 +964,7 @@ func setStepIntoBreakpoints(dbp *Target, curfn *Function, text []AsmInstruction,
964964
return err
965965
}
966966
breaklet := bp.Breaklets[len(bp.Breaklets)-1]
967-
breaklet.Callback = stepIntoCallback
967+
breaklet.callback = stepIntoCallback
968968
}
969969
}
970970
if gostmt {
@@ -1246,7 +1246,7 @@ func setStepIntoNewProcBreakpoint(p *Target, sameGCond ast.Expr) {
12461246
return
12471247
}
12481248
blet := bp.Breaklets[len(bp.Breaklets)-1]
1249-
blet.Callback = func(th Thread, p *Target) (bool, error) {
1249+
blet.callback = func(th Thread, p *Target) (bool, error) {
12501250
// Clear temp breakpoints that exist and set a new one for goroutine
12511251
// newg.goid on the go statement's target
12521252
scope, err := ThreadScope(p, th)

service/debugger/debugger.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1488,7 +1488,7 @@ func (d *Debugger) traverse(t proc.ValidTargets, f *proc.Function, depth int, fo
14881488
if err != nil {
14891489
return false, fmt.Errorf("failed to disassemble instruction: %w", err)
14901490
}
1491-
1491+
14921492
// Extract address from the decoded instruction's destination location
14931493
var addr uint64
14941494
if len(disasm) > 0 && disasm[0].DestLoc != nil {
@@ -1516,9 +1516,9 @@ func (d *Debugger) traverse(t proc.ValidTargets, f *proc.Function, depth int, fo
15161516
}
15171517
return false, nil
15181518
}
1519-
for _, dynbrklet_i := range dynbp.Breaklets {
1520-
dynbrklet_i.SetCallBack(dynCallback)
1521-
}
1519+
for _, dynbrklet_i := range dynbp.Breaklets {
1520+
dynbrklet_i.SetCallBack(dynCallback)
1521+
}
15221522
}
15231523

15241524
if instr.IsCall() && instr.DestLoc != nil && instr.DestLoc.Fn != nil {
@@ -1545,9 +1545,9 @@ func createFnTracepoint(d *Debugger, fname string, rootstr string, followCalls i
15451545

15461546
tbp, err1 := d.createBreakpointInternal(&api.Breakpoint{FunctionName: fname, Tracepoint: true, RootFuncName: rootstr, Stacktrace: 20, TraceFollowCalls: followCalls}, "", nil, false)
15471547
if tbp == nil {
1548-
if err1 != nil && strings.Contains(err1.Error(), "Breakpoint exists") {
1548+
if _, exists := err1.(proc.BreakpointExistsError); exists {// ;err1 != nil && strings.Contains(err1.Error(), "Breakpoint exists") {
15491549
// This is expected
1550-
} else {
1550+
} else if err1 != nil {
15511551
return nil, fmt.Errorf("error creating breakpoint at function %s", fname)
15521552
}
15531553
}
@@ -1556,7 +1556,7 @@ func createFnTracepoint(d *Debugger, fname string, rootstr string, followCalls i
15561556
for i := range raddrs {
15571557
rtbp, err := d.createBreakpointInternal(&api.Breakpoint{Addr: raddrs[i], TraceReturn: true, RootFuncName: rootstr, Stacktrace: 20, TraceFollowCalls: followCalls}, "", nil, false)
15581558
if rtbp == nil {
1559-
if err != nil && strings.Contains(err.Error(), "Breakpoint exists") {
1559+
if _, exists := err.(proc.BreakpointExistsError); exists { // != nil && strings.Contains(err.Error(), "Breakpoint exists") {
15601560
// This is expected
15611561
} else {
15621562
return nil, fmt.Errorf("error creating breakpoint at function return %s", fname)

0 commit comments

Comments
 (0)