Ruby 1.9에서 디버깅


90

루비 1.9에서 디버깅을 위해 무엇을 사용합니까? rdebug가 호환되지 않는 것 같습니다 .. 거기에 아무것도 없나요?


10
첫 번째 대답은 무시하십시오. ruby-debug19지금은 구식입니다.
Rob Howard

답변:


50

참고 :이 답변은 정확했지만 현재는 구식입니다. 아래 정답을 참조하십시오. 요약 : 지금 '디버거'를 사용하십시오.

이제 Ruby 1.9.x에서 ruby-debug를 사용할 수 있습니다. 참조 http://www.github.com/mark-moseley를

설치하려면 (1.9 Ruby 설치에서 gem 사용) :

gem install ruby-debug19

(아마도 그 앞에 필요한 'sudo'가 있음).


나는 피상적으로 시도했지만 작동하지 않았습니다. 이것을 볼 시간이 더 필요합니다.
Mark Moseley

ruby-debug-ide는 현재 작동 중입니다. cloud.github.com/downloads/mark-moseley/ruby-debug/
Mark Moseley

이것은 좋은 소식입니다! 감사합니다!
andi 2009-08-21

좋은 일 :)하지만 fatgem (1.8 및 1.9 ruby-debug 버전 모두 포함)을 만들 수 있으므로 rubydebbug19를 기억할 필요가 없습니까? :)
horseyguy

4
시간이 지남에 따라 이제 잘못된 답이 되었기 때문에 이것을 반대표를 던지는 것은 공정하지 않은 것 같습니다. 따라서 더 이상 유용하지 않은 이전 답변의 작성자에게 불이익을주지 않고 새로운 정답이 첫 번째 목록이 될 수 있도록 이러한 사용 사례를 처리하는 방법이 필요합니다 .
iconoclast 2012

167

ruby-debug19더 이상 유지되지 않습니다. 다른 모든 답변은 구식입니다.

그러나 대안이 있습니다.

debugger 구출!

이것을 당신의 Gemfile:

gem 'debugger', group: [:development, :test]

그냥 작동합니다. -그리고 그것은 레일스 Gemfile 3.2 이후에 포함되어 ruby-debug19있습니다. 똑같은 기능을 가지고 있으며 적극적으로 유지됩니다.


1
잘 작동합니다. ruby-debug를 손으로 설치하는 것보다 훨씬 낫습니다. 감사.
manu_v

5
이것은 정말로 최고의 답변으로 올라갈 필요가 있습니다.
Matt Zukowski 2012

2
예, 정말이 답변이 최고의 답변이어야합니다.
Nazar Hussain

그리고 이것이 실제로 Gemfile에서 어디에 있는지는 어떻습니까.
Rig

상관 없다. group :development do ... end이미 그룹이 포함되어 있으므로 그룹 블록 (등에 포함되지 않음)이 아닌 원하는 곳에 배치하십시오 .
iblue

70

RUBY 2.0+ 및 후속 업데이트

byebug 는 현재 Ruby 2.0 이상에 권장되는 디버거입니다.

이 문제는 여기문서화 되었으며 디버거 작성자 인 cldwalker는 디버거의 범위가 Ruby 1.9.2 및 1.9.3으로 지정 될 것이라고 언급했습니다.

업데이트 2

더 이상 유지되지 않는 곳을 찾을 수 없어도 루비 디버그가 적극적으로 유지되지 않는 것은 사실입니다.

새로운 gem을 시작하는 데 도움이 필요하면 새로운 디버거 gem을 사용할 수 있습니다 . Ryan Bates rails cast를 볼 수 있습니다 .

Gemfile에 다음을 입력하십시오.

gem 'debugger', group: [:development, :test]

그런 다음 debugger키워드를 사용하여 코드의 아무 곳에 나 중단 점을 추가 할 수 있습니다 .

여전히 사용할 수 있습니다.

linecache19 및 ruby-debug-base19와 함께 :

bash <<(curl -L https://raw.github.com/gist/1333785 )

오래된 답변

rvm, ruby ​​1.9.1-p378로 이것에 대해 추가하십시오. 사실은 ruby-debug가 1.9.x 준비가되어 있어도 linecache-0.43은 그렇지 않다는 것입니다. 해결책은 다음을 설치하는 것입니다.

gem install ruby-debug19

이것은 나를 위해 문제를 해결합니다.

이전 업데이트

루비 1.9.2 및 Rails 3 디버깅 퍼팅에 문제가있는 경우 :

gem 'ruby-debug-base19', "0.11.24"
gem 'ruby-debug19', "0.11.6"

Gemfile에서

bundle install

다시 행복한 디버거가 될 것입니다.


1
고마워, 더 적절한 대답이었습니다. 그러나 아마도 이것은 당신이 거의 1 년 후에 답변을했고 그 점에서 상황이 완전히 바뀌었기 때문일 것입니다.
마크

3

시도 할 수있는 몇 가지

1) 루비의 일반 디버거로 실행 -rdebug [1] 일종의 느림

2) 언 롤러 젬으로 실행하세요.

3) 많은 print 문을 빠르게 사용하십시오.

4) irb 프롬프트로 가서 거기에서 코드를 실행하십시오.

주변에 코드를 나열하는 자신의 "irb 프롬프트로 드롭"을 작성하여 코드를 나열한 다음 일반 irb 프롬프트로 드롭 할 수 있습니다.

5) 1.9 호환 모드의 jruby에 디버거가 있습니까?

[1] http://beaver.net/rdebug/index-0.html


3

ruby-debug19를 설치 한 후에도 문제가 계속되면 ruby-debug-base19를 업데이트 해보세요. 나는 오류가 있었고 그렇게 할 때까지 디버그 모드에서 WEBrick을 실행할 수 없었습니다.

gem update ruby-debug-base19

아, 그리고 모든 노력에 대해 Mr. Moseley에게 감사드립니다!


2

여기 내 대답을 참조하십시오 : Ruby-debug가 작동하지 않습니다.

Ruby 디버깅이 다음 설정과 함께 작동하도록하는 것입니다.

  • Mac OS X Lion 10.7.2
  • Aptana Studio 3 (빌드 3.0.8.201201201658)
  • rvm을 사용하여 프로젝트 작업 디렉토리에 다음과 같은 .rvmrc가 있습니다.

    rvm use ruby-1.9.3-p0@mygemset

이게 도움이 되길 바란다!

-- 프레디


2

나는 다음을 사용했고 그것은 나를 위해 잘 작동합니다.

gem '디버거', 그룹 : [: development, : test]

루비 1.9.3p194 (2012-04-20 개정 35410) [x86_64-linux] 레일 3.2.8


0

Netbeans는 RoR을위한 좋은 IDE입니다. 좋은 디버거도 있습니다.


1
내가 틀렸다면 정정하십시오.하지만 디버거가 아직 Ruby 1.9.1 (C 구현)에서 작동한다고 생각하지 않습니다. 적어도 나는 그것을 작동시키는 데 성공하지 못했습니다.
JP Richardson

0

루비 1.9.1-p243 버전이 나왔고 호환 가능한 ruby-debug-ide도 제대로 작동합니다. 다음 명령을 사용하여 ruby-debug-ide를 설치하십시오.

gem install ruby-debug-ide

그러면 ruby-debug-base19 및 ruby-debug-ide gem이 설치됩니다. 하지만 그 전에 RubyForge 에서 제공하는 개발 키트 문서를 따라 mingw를 성공적으로 설치했는지 확인하십시오 .


0

최신 기능은 ruby-debug-ide19 gem에서 사용할 수 있습니다.


0

필요에 따라 많은 선택이 있습니다.

저는 pry-moves를 사용 합니다. 그 자리에서 바로 디버그 모드에서 다시 실행하여 이전 명령 내부에서 발생한 일을 "돌아볼"수 있기 때문입니다.


-1

아무도 사용하지 않습니다 : ruby ​​-rdebug script.rb

그런 다음 다음을 사용할 수 있습니다. b script.rb : ## (여기서 ##은 유효한 루비 명령의 행 번호입니다) 그렇지 않으면 rubygems 또는 필요한 코드 덩어리 중 하나에있을 수 있습니다.

그런 다음 간단히 다음 중단 점을 b : ##으로 설정할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.