2010-03-24 2 views
6

저는 JRuby 코드에 익숙해 져 있습니다. 코드에 중단 점을 배치하고 (평소와 같이) 명령 행에서 실행하여 디버거가 깨지도록하고 싶습니다. 포인트. JRuby가 디버거를 깰 수 있도록 코드에 넣을 수있는 것이 있습니까?내 Ruby (JRuby) 코드에서 디버거를 깰 수있는 것은 무엇입니까?

(보통 jruby foo.rb 대신) jruby -r debug foo.rb을 실행 한 다음 b bar.py:98과 함께 중단 점을 설정하고 계속 시도했습니다. 하지만 디버거는 예외가있을 때마다 멈추고 내가 관심있는 코드 행에 도달하기 전에 많은 부분이있는 것처럼 보입니다. 디버거에 "break-into-debugger"를 넣을 수 있기를 바랍니다. 줄을 내 코드에 넣고 jruby foo.rb을 실행하고 디버거가 그 행에 멈추는 첫 번째 위치에 놓습니다.

(즉 내가 파이썬에서 import pdb;pdb.set_trace()의 루비/JRuby를 동등한를 찾고 있어요.)

답변

5

당신은 NetbeansRuby IDE을 시도 할 수 있습니다, 그것은 내장 JRuby에서 통역 및 디버깅 도구를 가지고 당신은 시각적으로 디버깅 할 수 있습니다 IDE 직접.

  1. 수동으로 루비 - 디버그 - 기본 - 0.10.3.1 - 자바를 다운로드 :
    에 IDE를 사용하여 당신을위한 옵션이없는 경우, 당신의 JRuby를 배포판에 debug 보석 드 설치하고 debugger 명령을 통해 그것을 사용할 수 있습니다. gem을 debug-commons에서 로컬 디렉토리로 이동하십시오.
  2. 은 JRuby를 보석 저장소에 보석을 설치합니다
    jruby -S gem install -l ruby-debug-base-0.10.3.1-java.gem
  3. 루비 - 디버그 보석을 설치합니다
    jruby -S gem install --ignore-dependencies ruby-debug

debugger 명령이 작동합니다. Netbeans wiki, rdebug wikiJRuby wiki

+0

Netbeans은 약간의 설정만으로 나를 위해 잘 작동합니다. 감사! –

+1

JRuby 1.5+에서는 모든 필수 보석이 기본적으로 설치되므로 아무것도 설치하지 않아도됩니다 (특히 기본이 아닌 명령 행 옵션과 함께). 그래서 디버그는 JRuby 1.5+에서 즉시 사용할 수 있습니다. – vsizikov

1
require 'rubygems' 
require 'ruby-debug' 
debugger 
+0

"LoadError :로드 할 파일이 없습니다 - 루비 디버그"- 아마도 JRuby에서 작동하지 않습니다? –

+0

분명히 JRuby는 비 고유 Ruby 구성 요소가있는 보석을 지원하지 않습니다. Google은 다음과 같이 나타났습니다.하지만 그것이 좋은지 전혀 모르겠습니다. http://debug-commons.rubyforge.org/ – bnaul

1

나는 윈도우 7에 사람들이 무슨 말을

달리을 (1.9.3p385) JRuby를 1.7.3을 사용하고 있습니다에

# test.rb 
require 'rubygems' 
require 'ruby-debug' 
debugger 
# run like this: 
jruby --debug -S rdebug test.rb 

더 많은 정보가 않습니다 하지 JRuby가 사전 설치된 루비 디버그 버전 인 것 같습니다. 그러나 gem install ruby-debug을 실행하여 설치했습니다. 나는이 같은 내 코드에서 디버거를 시작

require 'rubygems' 
require 'ruby-debug' 
debugger 

당신은 중단 점을 가지고 원하는 모든 곳에서 debugger 메소드를 호출 할 필요가 있습니다.

는이 같은 코드를 실행 :

jruby --debug program.rb 

--debug 옵션은 선택 사항입니다, 그러나 그것없이 당신은 "추적 (예를 들어, set_trace_func) 플래그를 --debug없이 모든 이벤트를 캡처하지 않습니다"라는 경고를 얻을.

여기에 대한 또 다른 대답은 명령 줄에서 -S rdebug 옵션을 사용했습니다. 이 옵션은 디버깅에 필요하지 않으며 프로그램 시작 부분에서 디버거를 시작합니다.디버거를 필요에 따라 시작하려면 debugger 메서드를 호출하면됩니다. 그 옵션을 사용하지 마십시오.

ruby-debug gem이 없어도 JRuby에 기본 디버깅 기능이 내장 된 것 같습니다. debug.rb. 파일에 load 'debug.rb'을 쓰면 디버거가 시작됩니다. ("Debug.rb"와 "Emacs support available.") 몇 가지 쓸데없는 메시지를 출력하지만 작동하는 것처럼 보입니다.

관련 문제