我正在尝试使用一个允许我使用ruby-debug的补丁来重新安装ruby 1.9.3.
按照说明操作时
rvm reinstall 1.9.3 --patch debug --force-autoconf
Run Code Online (Sandbox Code Playgroud)
它贯穿并应用补丁吐出后:
rvm需要autoreconf来安装所选的ruby解释器,但是在PATH中找不到autoreconf.
不幸的是,谷歌搜索如何在OSX Lion上安装autoreconf(或者根本没有关于它的信息)似乎是一个死胡同.
我试图让Ruby调试器在我的一个规范中运行:
describe User do
it "should be valid" do
debugger
User.new.should be_valid
end
end
Run Code Online (Sandbox Code Playgroud)
当我运行rspec时,我得到:
debugger statement ignored, use -d or --debug option to enable debugging
Run Code Online (Sandbox Code Playgroud)
我尝试过以下方法:
rake spec --debug
rake spec --debug --trace
rake spec:models --debug
bundle exec rspec --debug
bundle exec rspec --debug spec/models/
bundle exec rspec --d spec/models/
bundle exec "rspec --debug" spec/models/
bundle exec rspec --debugger spec/models/
bundle exec --debugger rspec spec/models/
bundle --debugger exec rspec spec/models/
bundle --debugger exec rspec spec/models/
bundle exec --debugger rspec …Run Code Online (Sandbox Code Playgroud) 我刚刚更新到Ruby 1.9.3p0和Rails 3.1.1.现在,当我尝试启动服务器时,它抱怨我应该安装ruby-debug,即使它已经安装.
% rails server --environment=development --debug
=> Booting WEBrick
=> Rails 3.1.0 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
You need to install ruby-debug to run the server in debugging mode. With gems, use 'gem install ruby-debug'
Exiting
Run Code Online (Sandbox Code Playgroud)
在我的Gemfile中我有
# see: http://stackoverflow.com/questions/1083451/debugging-in-ruby-1-9
gem 'ruby-debug-base19', "0.11.24"
gem 'ruby-debug19', "0.11.6"
Run Code Online (Sandbox Code Playgroud)
是否可以使用最新版本的Ruby运行调试?
我有标准的ruby-head和Rails 3.1rc4.我按照http://dirk.net/2010/04/17/ruby-debug-with-ruby-19x-and-rails-3-on-rvm/中的说明安装了ruby-debug.
但是当我运行rails s --debugger它会抛出这个奇怪的错误
/Users/schovi/.rvm/gems/ruby-head/gems/activesupport-3.1.0.rc4/lib/active_support/dependencies.rb:237:in `require': dlopen(/Users/schovi/.rvm/gems/ruby-head/gems/linecache19-0.5.12/lib/trace_nums19.bundle, 9): Symbol not found: _ruby_current_thread (LoadError)
Referenced from: /Users/schovi/.rvm/gems/ruby-head/gems/linecache19-0.5.12/lib/trace_nums19.bundle
Expected in: flat namespace
in /Users/schovi/.rvm/gems/ruby-head/gems/linecache19-0.5.12/lib/trace_nums19.bundle - /Users/schovi/.rvm/gems/ruby-head/gems/linecache19-0.5.12/lib/trace_nums19.bundle
from /Users/schovi/.rvm/gems/ruby-head/gems/activesupport-3.1.0.rc4/lib/active_support/dependencies.rb:237:in `block in require'
from /Users/schovi/.rvm/gems/ruby-head/gems/activesupport-3.1.0.rc4/lib/active_support/dependencies.rb:223:in `block in load_dependency'
Run Code Online (Sandbox Code Playgroud)
任何的想法?谢谢,大卫
当我写debugger它不开始:
NoMethodError: undefined method `run_init_script' for Debugger:Module
from /usr/local/lib/ruby/gems/1.8/gems/ruby-debug-base-0.10.3/lib/ruby-debug-base.rb:239:in `debugger'
from (irb):4
Run Code Online (Sandbox Code Playgroud)
如果我跑rake my:task --debugger,它会立即将我返回到控制台.如何调试rake任务?
我的Rails是3.2.1.4,Ruby是1.9.3p448.
我安装时遇到错误ruby-debug:
Building native extensions. This could take a while...
ERROR: Error installing ruby-debug:
ERROR: Failed to build gem native extension.
/home/hxh/.rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb
Can't handle 1.9.x yet
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/home/hxh/.rvm/rubies/ruby-1.9.3-p448/bin/ruby
Gem files …Run Code Online (Sandbox Code Playgroud) 是否有任何命令,无论是在debugger或ruby-debug获得在内存中加载了Rails的过程中所有的宝石和/或插件的列表?我知道只有' require'宝石被加载但我想快速查看在运行时加载的内容.
可能重复:
Rails 3.1和Ruby 1.9.3p125:ruby-debug19仍然崩溃"未找到符号:_ruby_threadptr_data_type"
我运行这个:
gem install ruby-debug19
在我的黄瓜env.rb文件中,我有这个:
require 'ruby-debug'
但是,当我尝试运行时,我得到了这个例外:
/home/skendall/.rvm/gems/ruby-1.9.3-p0/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.so: undefined symbol: ruby_current_thread - /home/skendall/.rvm/gems/ruby-1.9.3-p0/gems/ruby-debug-base19-0.11.25/lib/ruby_debug.so (LoadError)
我需要做些什么才能让ruby-debug与1.9.3-p0一起使用?
通常,当测试失败时,我花了很长时间试图找出导致测试失败的原因.如果RSpec在测试失败时启动Ruby调试器会很有用,这样我就可以立即检查局部变量以深入了解原因.
我正在使用的解决方案现在看起来像这样:
# withing some test
debugger unless some_variable.nil?
expect(some_variable).to be_nil
Run Code Online (Sandbox Code Playgroud)
但是,这种方法很麻烦,因为我首先等待测试失败,然后添加调试器行,修复问题然后必须删除调试器行,而我希望它的工作更像是gdb哪个有能力启动时如果遇到异常,则无需使用debugger语句来编写代码库.
编辑:我试过普利茅斯.它对我来说还不够可靠.此外,开发历史似乎表明它不是一个非常受支持的宝石,所以我宁愿不依赖它.
更新:我试过去pry-rescue发现它很整洁.但是,我经常使用宙斯,并且想知道是否有办法让它适用pry-rescue.
Noob可能会遗漏一些明显的东西...我正在尝试调试Rspec文件.此时Rsspec文件被删除:
require 'spec_helper'
describe PagesController do
render_views
describe "GET 'home'" do
describe "when not signed in" do
before(:each) do
get :home
end
it "should be successful" do
response.should be_success
end
it "should have a vendor section" do
response.should have_selector("h1", :content => "Vendor")
end
it "should have a hospital section" do
response.should have_selector("h1", :content => "Hospital")
end
end
end
Run Code Online (Sandbox Code Playgroud)
我从命令行进行以下调用:
rdebug spec/controllers/pages_controller_spec.rb
Run Code Online (Sandbox Code Playgroud)
调试器运行,但会引发以下错误:
> require 'spec_helper'
<internal:lib/rubygems/custom_require>:29:in `require'
<internal:lib/rubygems/custom_require>:29:in `require'
/home/kevin/.rvm/bin/rails_projects/evaluationrx/spec/controllers/pages_controller_spec.rb:1:in `<top (required)>'
/home/kevin/.rvm/gems/ruby-1.9.2-p136@rails3tutorial/gems/ruby-debug19-0.11.6/bin/rdebug:125:in `debug_load'
/home/kevin/.rvm/gems/ruby-1.9.2-p136@rails3tutorial/gems/ruby-debug19-0.11.6/bin/rdebug:125:in `debug_program'
/home/kevin/.rvm/gems/ruby-1.9.2-p136@rails3tutorial/gems/ruby-debug19-0.11.6/bin/rdebug:412:in `<top (required)>'
/home/kevin/.rvm/gems/ruby-1.9.2-p136@rails3tutorial/bin/rdebug:19:in …Run Code Online (Sandbox Code Playgroud)