ruby 2.1.0를 사용중이며, debug(디버그)를 위해 pry와 pry-nav를 설치한다. 


$ gem install pry

$ gem install pry-nav




ruby 테스트 코드 작성

$ cat Point.rb

require 'pry'

class Point

  attr_accessor :x, :y

  attr_reader :zzz

  def say_hello

    puts "Hello World"

  end


end


def another_hello

  puts "Hello World (from a method)"

end


p = Point.new

p.say_hello

p.x = 10

binding.pry

puts p.x

another_hello



소스 중에 break하고 싶은 곳을 'binding.pry'을 입력하고 실행하면, 디버그콘솔화면이 나온다. 간단하게 테스를 할 수 있다. 


 $ ruby Point.rb

Hello World


From: /mydev/test/ruby/Point.rb @ line 18 :


    13: end

    14:

    15: p = Point.new

    16: p.say_hello

    17: p.x = 10

 => 18: binding.pry

    19: puts p.x

    20: p.zzz = 20

    21: another_hello


[1] pry(main)> puts p.x

10

=> nil

[2] pry(main)> puts p.y

=> nil

[5] pry(main)> def plus(a, b)

[5] pry(main)*   return a + b

[5] pry(main)* end

=> :plus

[6] pry(main)> p.y = 0

=> 0

[7] pry(main)> plus(p.x, p.y)

=> 10

[8] pry(main)> exit





디버그 에서 하듯이 setp/next/continue/exit를 할 수 있다. 



Samuel /mydev/test/ruby $ ruby Point.rb

Hello World


From: /mydev/test/ruby/Point.rb @ line 18 :


    13: end

    14:

    15: p = Point.new

    16: p.say_hello

    17: p.x = 10

 => 18: binding.pry

    19: puts p.x

    20: another_hello


[1] pry(main)> next


From: /mydev/test/ruby/Point.rb @ line 19 :


    14:

    15: p = Point.new

    16: p.say_hello

    17: p.x = 10

    18: binding.pry

 => 19: puts p.x

    20: another_hello





주로 사용하는 ruby 명령어는 다음과 같다. 



  • next : 다음 한 단계 진행
  • step : 다음 한 단계 진행 또는 메소드 진입
  • continue : 다음 binding.pry 까지 진행 또는 binding.pry 없으면 코드 끝까지 실행
  • quit, exit : 모든 코드 실행후 종료
  • !!! : 바로 종료
  • help : 도움말


기타 

  • watch 테스트 

[1] pry(main)> watch p

Watching p

watch: p => #<Point:0x007ffa1580fb80 @x=10>





Posted by '김용환'
,