无法安装调试器

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 。

【讨论】:

以上是关于无法安装调试器的主要内容,如果未能解决你的问题,请参考以下文章

Bundler 无法安装调试器 1.6.8

无法调试/安装 Watch App Extension

如果 Windows 服务由 Visual Studio 安装程序安装,则无法调试它

无法安装 GPU 调试工具 (extras;android;gapid;3) OSX

无法安装代号一 iOS 调试应用程序

无法使用 VS2012 安装用于远程调试的 Windows Web 服务 API