mirror of
https://github.com/go-delve/delve.git
synced 2025-11-03 22:08:33 +08:00
Modify Step() to not print, delegate to command
This commit is contained in:
18
main.go
18
main.go
@ -63,8 +63,24 @@ func printStderrAndDie(args ...interface{}) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func registerProcessCommands(cmds *command.Commands, proc *proctl.DebuggedProcess) {
|
func registerProcessCommands(cmds *command.Commands, proc *proctl.DebuggedProcess) {
|
||||||
cmds.Register("step", command.CommandFunc(proc.Step))
|
|
||||||
cmds.Register("continue", command.CommandFunc(proc.Continue))
|
cmds.Register("continue", command.CommandFunc(proc.Continue))
|
||||||
|
cmds.Register("step", func(args ...string) error {
|
||||||
|
err := proc.Step()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
regs, err := proc.Registers()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
f, l, _ := proc.GoSymTable.PCToLine(regs.PC())
|
||||||
|
fmt.Printf("Stopped at: %s:%d\n", f, l)
|
||||||
|
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
|
||||||
cmds.Register("break", func(args ...string) error {
|
cmds.Register("break", func(args ...string) error {
|
||||||
fname := args[0]
|
fname := args[0]
|
||||||
bp, err := proc.Break(fname)
|
bp, err := proc.Break(fname)
|
||||||
|
|||||||
@ -135,7 +135,11 @@ func (dbp *DebuggedProcess) Step() error {
|
|||||||
|
|
||||||
bp, ok := dbp.PCtoBP(regs.PC())
|
bp, ok := dbp.PCtoBP(regs.PC())
|
||||||
if ok {
|
if ok {
|
||||||
dbp.restoreInstruction(regs.PC(), bp.OriginalData)
|
err = dbp.restoreInstruction(regs.PC(), bp.OriginalData)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
err = dbp.handleResult(syscall.PtraceSingleStep(dbp.Pid))
|
err = dbp.handleResult(syscall.PtraceSingleStep(dbp.Pid))
|
||||||
@ -143,11 +147,9 @@ func (dbp *DebuggedProcess) Step() error {
|
|||||||
return fmt.Errorf("step failed: ", err.Error())
|
return fmt.Errorf("step failed: ", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
f, l, fn := dbp.GoSymTable.PCToLine(regs.PC())
|
// Restore breakpoint
|
||||||
fmt.Printf("Stopped at: %s %s:%d\n", fn.Name, f, l)
|
|
||||||
|
|
||||||
if ok {
|
if ok {
|
||||||
_, err = dbp.Break(bp.FunctionName)
|
_, err := dbp.Break(bp.FunctionName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user