无法安装调试器
Posted
技术标签:
【中文标题】无法安装调试器【英文标题】:Can't get past installing debugger 【发布时间】:2015-02-12 08:39:19 【问题描述】:我正在尝试创建一个新的 Rails 项目,当我运行 rails new appname 时它会告诉我
在任何源中都找不到 debugger-1.6.8 运行 `bundle install` 来安装缺失的 gem。
然后当我运行 bundle install 我得到这个错误
Gem::Ext::BuildError: 错误: 未能构建 gem 原生扩展。 /Users/用户名/.rvm/rubies/ruby-2.1.4/bin/ruby -r ./siteconf20141213-76431-12dyum4.rb extconf.rb *** extconf.rb 失败 *** 由于某种原因无法创建 Makefile,可能缺乏必要 库和/或标题。检查 mkmf.log 文件以获取更多详细信息。你可以 需要配置选项。 提供的配置选项: --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 --没有-make-prog --srcdir=。 --curdir --ruby=/Users/用户名/.rvm/rubies/ruby-2.1.4/bin/ruby /Users/username/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/fileutils.rb:1401:in `initialize': 没有这样的文件或目录@rb_sysopen - ./214/ruby_debug.h (Errno::ENOENT) 来自 /Users/username/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/fileutils.rb:1401:in `open' 来自 /Users/username/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/fileutils.rb:1401:in `copy_file' 来自 /Users/username/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/fileutils.rb:483:in `copy_file' 来自 /Users/username/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/fileutils.rb:400:in `block in cp' 来自 /Users/username/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/fileutils.rb:1579:in `block in fu_each_src_dest' 来自 /Users/username/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/fileutils.rb:1593:in `fu_each_src_dest0' 来自 /Users/username/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/fileutils.rb:1577:in `fu_each_src_dest' 来自 /Users/username/.rvm/rubies/ruby-2.1.4/lib/ruby/2.1.0/fileutils.rb:399:in `cp' 来自 extconf.rb:83:in `block in ' 来自 extconf.rb:82:in `each' 来自 extconf.rb:82:in `' extconf 失败,退出代码 1 Gem 文件将继续安装在 /Users/username/.rvm/gems/ruby-2.1.4/gems/debugger-1.6.8 中以供检查。 结果记录到 /Users/username/.rvm/gems/ruby-2.1.4/extensions/x86_64-darwin-13/2.1.0-static/debugger-1.6.8/gem_make.out
我知道调试器不适用于 Ruby 2.1.4,那么如何让 bundler 停止尝试安装它?我必须使用 Rails 应用程序模板吗?
【问题讨论】:
你的 Rails 版本是多少? 4.1.8默认不包含debugger
,注释掉了。
看起来您缺少一些开发标头。 /Users/username/.rvm/gems/ruby-2.1.4/extensions/x86_64-darwin-13/2.1.0-static/debugger-1.6.8/gem_make.out的内容有什么线索吗?
我相信我使用的是 4.1.8 ,所以如果它被注释掉,我不应该得到那个错误吗?
gem_make out 给了我上面打印的相同错误,字符限制不会让我再次打印整个内容
@PeteyT 我运行gem install debugger
,它给了我相同的输出。由于我的环境很好(我很确定),所以这个 Ruby(MRI 2.1.4p265)不支持 debugger
,应该改用 byebug
。
【参考方案1】:
因此,对于这种确切的情况 - 从项目根目录的 Gemfile
中注释或删除它以及任何依赖它的 gem(查看 Gemfile.lock
),然后运行 bundle install
。
Rails 4.1.8 实际上生成了一个应用程序的Gemfile
,其中debugger
被注释掉了,所以它应该已经可以正常工作了。
如果您确实需要调试器,您可以使用 byebug
,这是 Ruby 2.0+ 的 debugger
的替代品。在即将发布的 Rails 4.2.0 版本中,它是 already baked into the generator。
创建新应用时,还可以在创建应用骨架后添加选项-B
或--skip-bundle
以不运行bundle install
。然后你可以修复你的Gemfile
并在项目文件夹中自己运行bundle install
。不过,这只会为您节省一点时间。
【讨论】:
【参考方案2】:此失败的原因是您的 Gemfile 中存在“byebug” gem。您可以在 Gemfile 的“开发和测试”组中看到它,看起来像
group :development, :test do
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
gem 'byebug'
'byebug' 与 'debugger' 具有相同的功能 - 任何对文档感兴趣的人都可以访问 Github 。
【讨论】:
以上是关于无法安装调试器的主要内容,如果未能解决你的问题,请参考以下文章
如果 Windows 服务由 Visual Studio 安装程序安装,则无法调试它