mirror of
				https://github.com/ruby/ruby.git
				synced 2022-11-09 12:17:21 -05:00 
			
		
		
		
	Refactoring. Added Context#format_frame to format a frame, used by up/down
command and Context#display_frames. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@2121 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
		
							parent
							
								
									d80b8cd59e
								
							
						
					
					
						commit
						018c5191bf
					
				
					 1 changed files with 16 additions and 13 deletions
				
			
		
							
								
								
									
										29
									
								
								lib/debug.rb
									
										
									
									
									
								
							
							
						
						
									
										29
									
								
								lib/debug.rb
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -450,7 +450,7 @@ class DEBUGGER__
 | 
			
		|||
	      stdout.print "At toplevel\n"
 | 
			
		||||
	    end
 | 
			
		||||
	    binding, binding_file, binding_line = @frames[frame_pos]
 | 
			
		||||
           stdout.printf "#%d %s:%s\n", frame_pos+1, binding_file, binding_line
 | 
			
		||||
	    stdout.print format_frame(frame_pos)
 | 
			
		||||
 | 
			
		||||
	  when /^\s*down(?:\s+(\d+))?$/
 | 
			
		||||
	    previous_line = nil
 | 
			
		||||
| 
						 | 
				
			
			@ -465,7 +465,7 @@ class DEBUGGER__
 | 
			
		|||
	      stdout.print "At stack bottom\n"
 | 
			
		||||
	    end
 | 
			
		||||
	    binding, binding_file, binding_line = @frames[frame_pos]
 | 
			
		||||
           stdout.printf "#%d %s:%s\n", frame_pos+1, binding_file, binding_line
 | 
			
		||||
	    stdout.print format_frame(frame_pos)
 | 
			
		||||
 | 
			
		||||
	  when /^\s*fin(?:ish)?$/
 | 
			
		||||
	    if frame_pos == @frames.size
 | 
			
		||||
| 
						 | 
				
			
			@ -596,20 +596,22 @@ EOHELP
 | 
			
		|||
    end
 | 
			
		||||
 | 
			
		||||
    def display_frames(pos)
 | 
			
		||||
      pos += 1
 | 
			
		||||
      n = 0
 | 
			
		||||
      at = @frames
 | 
			
		||||
      for bind, file, line, id in at
 | 
			
		||||
	n += 1
 | 
			
		||||
	break unless bind
 | 
			
		||||
	if pos == n
 | 
			
		||||
	  stdout.printf "--> #%d  %s:%s%s\n", n, file, line, id ? ":in `#{id.id2name}'":""
 | 
			
		||||
	else
 | 
			
		||||
	  stdout.printf "    #%d  %s:%s%s\n", n, file, line, id ? ":in `#{id.id2name}'":""
 | 
			
		||||
	end
 | 
			
		||||
      0.upto(@frames.size - 1) do |n|
 | 
			
		||||
        if n == pos
 | 
			
		||||
          stdout.print "--> "
 | 
			
		||||
        else
 | 
			
		||||
          stdout.print "    "
 | 
			
		||||
        end
 | 
			
		||||
        stdout.print format_frame(n)
 | 
			
		||||
      end
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def format_frame(pos)
 | 
			
		||||
      bind, file, line, id = @frames[pos]
 | 
			
		||||
      sprintf "#%d %s:%s%s\n", pos + 1, file, line,
 | 
			
		||||
	(id ? ":in `#{id.id2name}'" : "")
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def display_list(b, e, file, line)
 | 
			
		||||
      stdout.printf "[%d, %d] in %s\n", b, e, file
 | 
			
		||||
      if lines = SCRIPT_LINES__[file] and lines != true
 | 
			
		||||
| 
						 | 
				
			
			@ -778,6 +780,7 @@ EOHELP
 | 
			
		|||
        context(th[0]).set_trace arg
 | 
			
		||||
      end
 | 
			
		||||
      Thread.critical = false
 | 
			
		||||
      arg
 | 
			
		||||
    end
 | 
			
		||||
 | 
			
		||||
    def set_last_thread(th)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue