2014-02-26 5 views
8

Ich verwende RubyMine, um meinen Ruby 2.0-Code zu schreiben und zu debuggen. Zu diesem Zweck wird ruby-debug-ide verwendet. Ich möchte wissen, ob ein Programm im Debug-Modus läuft.Ermitteln, ob ein Programm im Debug-Modus ausgeführt wird

Ich weiß, dass es die Ruby $DEBUG globale Variable, aber soweit ich verstehe Ruby-debug-ide hat es nicht geändert, weil es nicht die -d Ruby-Flag verwendet.

Wenn ich meine Datei Debuggen mit RubyMine der Befehl sieht wie folgt ausgeführt:

/home/user/.rvm/rubies/ruby-2.0.0-p353/bin/ruby -e at_exit{sleep(1)};$stdout.sync=true;$stderr.sync=true;load($0=ARGV.shift) /home/user/.rvm/gems/ruby-2.0.0-p353/gems/ruby-debug-ide-0.4.22/bin/rdebug-ide --disable-int-handler --port 37737 --dispatcher-port 47992 -- /home/user/file.rb 

Ich versuchte ARGV oder $0 zu verwenden, um zu bestimmen, ob die Befehlszeile die Zeichenfolge 'rdebug-ide' enthält aber ARGV ist ein leeres Array und $0 ist nur '/home/user/file.rb', wie bekomme ich die vollständige Befehlszeile von RubyMine ausgeführt?

+0

haben Sie versucht, 'ENV ['debugger_host']. Nil?' – Abdo

+0

ENV ['debugger_host']. Nil? true in beiden Fällen – ShockwaveNN

Antwort

5

ist das, was ich getan habe:

ich den folgenden Code in einer (Schiene) die Tat umgesetzt und habe einen diff an den Ausgängen sowohl im Debug-und Nicht-Debug-Modi: bemerkt

puts ENV.to_hash.to_yaml 

I dass einer der Unterschiede in ENV['RUBYLIB'] ist (es gibt auch IDE_PROCESS_DISPATCHER, DEBUGGER_STORED_RUBYLIB, RUBYOPT, and DEBUGGER_HOST)

hier ist so, wie Sie überprüfen würde:

+1

Danke. Das funktioniert bei mir – ShockwaveNN

+1

Gut zu hören! :-) – Abdo

+1

Funktioniert zumindest in RubyMine + rvm. Vielen Dank! – skywinder

1

Sie benötigen die globale Variable $LOAD_PATH.

a = $LOAD_PATH 
a.each do |current_path| 
    puts 'Debug mode' if current_path.include?('rb/gems') 
end 

$LOAD_PATH hat diese Zeile "/home/username/RubyMine-6.0.2/rb/gems" wenn ich Debug-Modus verwenden. Diese

+0

Willkommen bei Stack Overflow! Können Sie bitte Ihre Antwort bearbeiten, um ein Beispiel zu erhalten, das zeigt, wie die Variable '$ LOAD_PATH 'verwendet wird, um das zu erreichen, was OP will? – toro2k

+0

Entschuldigung für die Irreführung. Für mich funktioniert diese Variante nur bei sauberer .rb Datei. Aber wenn ich es in meinem Projekt verwende - sowohl debuggen und ausführen $ LOAD_PATH enthält 'ruby-debug', weiß nicht, warum – ShockwaveNN