mirror of
				https://github.com/go-delve/delve.git
				synced 2025-11-04 06:32:16 +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