加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 确定程序是否在调试模式下运行

发布时间:2020-12-16 19:12:16 所属栏目:百科 来源:网络整理
导读:我使用 RubyMine编写和调试我的 Ruby 2.0代码.它为此目的使用ruby-debug-ide.我想知道程序是否在调试模式下运行. 我知道有Ruby $DEBUG全局变量,但据我所知,ruby-debug-ide没有改变它,因为它没有使用-d ruby??标志. 如果我使用Rubymine调试我的文件,执行的命
我使用 RubyMine编写和调试我的 Ruby 2.0代码.它为此目的使用ruby-debug-ide.我想知道程序是否在调试模式下运行.

我知道有Ruby $DEBUG全局变量,但据我所知,ruby-debug-ide没有改变它,因为它没有使用-d ruby??标志.

如果我使用Rubymine调试我的文件,执行的命令如下所示:

/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

我试图使用ARGV或$0,以确定命令行是否包含字符串’rdebug-ide’但ARGV是一个空数组而$0只是’/home/user/file.rb’,我怎样才能得到完整的命令由RubyMine执行的行?

解决方法

这就是我做的:

我将以下代码放在(rails)操作中,并在调试和非调试模式下对输出执行diff:

puts ENV.to_hash.to_yaml

我注意到其中一个区别在于ENV [‘RUBYLIB’](还有IDE_PROCESS_DISPATCHER,DEBUGGER_STORED_RUBYLIB,RUBYOPT和DEBUGGER_HOST)

所以这是你如何检查:

if ENV['RUBYLIB'] =~ /ruby-debug-ide/
  puts 'in debug mode'
else
  puts 'not in debug mode'
end

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读