问题标签 [byebug]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - 我正在尝试在 Rails 上安装 ruby,但它告诉我我还没有安装 gem byebug 11.0.1 但我已经安装了?
我正在尝试在 Windows 7 机器上安装 Ruby on Rails。我按照http://installrails.com/上的说明进行操作。我试图运行服务器,它说要运行bundle install
以安装缺少的turbolinks
gem。我无法gem 'turbolinks <~> 5> x86 -mingw32'
在您的 gemfile 中列出的任何 gem 源中找到或在这台机器上可用
我当然试过 bundle install 这是结果: administrative powershell
请注意,我必须安装较新版本的 Ruby,然后才能做到gem install byebug
这一点,但这对我来说很奇怪,因为它说
确定
gem install byebug succeeds
。
它成功了,但仍然无法正常工作:(。有什么建议吗?
编辑:在尝试 gem install bundler 和另一个 bundle install 之后,我现在得到你的 ruby 版本是 2.5.5,但你指定的 gemfile 是 2.2.6?有人可以解决这个问题吗?
ruby-on-rails - 通过重定向标准输入和标准输出来调试由 webrick 生成的子 ruby cgi 进程
问题:byebug 或 pry 输出通过 HTTP 而不是控制台返回。
我有一个webrick.rb脚本,它有一个 CGIHandler 安装了一个dispatch.fcgi脚本传递给它:
server.mount("/", WEBrick::HTTPServlet::CGIHandler, File.expand_path(File.dirname( FILE ))+"/dispatch.fcgi")
因此,webrick 通过 _do_GET_ 方法将每个 HTTP 请求传递给该脚本。
此方法使用 IO::popen 根据此代码片段生成一个子进程
/usr/local/rvm/rubies/ruby-2.2.10/lib/ruby/2.2.0/webrick/httpservlet /cgihandler.rb
当我在源代码文件中使用byebug或binding.pry时,它们的stdout会返回到父进程,然后由dispatch.fcgi脚本最终返回,从而通过 HTTP 返回。显然这是没用的,因为我无法与之交互。
为了解决这个问题,我的想法是让 byebug 使用不同的 IO 流而不是 stdout 和 stdin 或以其他方式将其重定向到 /dev/pts 下的不同文件描述符。然后,我可以编写一个小的 console.rb 脚本来与这些文件描述符/IO 流进行交互,这样我就可以与 byebug 或 pry 交互。
我是 ruby、byebug/pry 和 webrick 的新手,我的想法听起来很复杂。我真的不知道如何实现这一点(例如,我如何在操作系统中创建新的文件描述符),我相信肯定有一些比破解 byebug/pry gem 和弄乱操作系统更简单的方法?调试 CGI 的资源非常少。
byebug - “byebug”中的下一步和步骤之间的区别
“byebug”中的“step”和“next”有什么区别。什么时候应该使用一种而不是另一种?
ruby - ByeBug 太深了。在“下一步”进入 RubyCore 文件
我在 Ruby 程序中使用“byebug”。
当我“下一步”通过程序“ByeBug”时,它走得太深了,正在进入 ruby/core。
这是以前从未发生过的。有没有我可以调整的设置,所以 ByeBug 不会“下一步”进入 Ruby 源代码并留在程序中。
我通过以下调用调用 byebug。相同的结果
捆绑执行 rspec
rspec
红宝石文件名.rb
ruby - 将黑盒库添加到 Pry 调试
使用 Pry 时是否可以“黑盒”库?
我喜欢在遇到断点时遍历堆栈,但我真的不关心活动记录事务管理等。事实上,有时它甚至使遍历堆栈完全没用。
在 javascript 中,很容易将脚本添加到忽略列表中,并且它们只是在调试期间被跳过。有没有办法用 Pry 实现类似的行为?
其他细节
我所说的堆栈遍历的意思是使用“向上”移动到调用源代码行,该行将源代码标记移动到前一个堆栈帧。
我想忽略我自己的代码之外的帧,比如 ActiveRecord 和大多数第三方 gem。我不介意使用黑名单或白名单。
Bundle 给了我这些 gem 版本:
ruby - 当命令执行一些错误时,为什么我的 pry-byebug 包会提供如此多的输出?
我最近安装了 gem pry-byebug
,当我注意到它至少需要 Ruby 2.4 版才能运行时。所以我使用 更新了我的 Ruby rvm
,然后安装了 gemspry
和pry-byebug
. 一切正常。我开始编写一些代码并设置一些断点binding.pry
。
但是现在当我调试时,我必须处理来自pry-byebug
.我的问题在哪里。
例如,假设我binding.pry
在实例化一些对象的部分代码中设置了一个断点。
假设我开始查看对象casting_object1
并casting_object2
确定它们的方法是否已正确编写,并且我不小心输入了一些小错误,例如调用不存在的对象/函数。我得到这种输出:
无论引发什么样的错误,我总是会得到这种似乎是在引用pry
or pry-byebug
gem 的代码库中的代码的输出。虽然这不是一个主要问题(因为我仍然可以设置断点并在 pry 中操作对象),但有太多多余的输出,以至于查明错误的过程变得不是特别容易或明确,尤其是在终端设置中。我自己尝试通过卸载并重新安装 gemspry
和来修正这个问题pry-byebug
,并且还尝试安装以前版本的pry
andpry-byebug
以使其正常工作。我试图用谷歌搜索这个问题,但遗憾的是,我对术语不够熟悉,无法确定问题的实质。
自从我用 rvm 更新了我的 Ruby,这个问题就一直在发生。我不想回到旧版本的 Ruby,因为我在代码中使用的一些 gem 需要最新版本。任何人都可以给我任何反馈来解释为什么会发生这种情况,并且可能,我该如何解决它?我正在使用 macOS Mojave v10.14.6,并使用 Ruby v2.7.0-preview1
更新
于是我去了 的 github 仓库,pry-byebug
发现其他一些用户也遇到了和我一样的问题。
https://github.com/deivid-rodriguez/pry-byebug/issues/138
https://github.com/deivid-rodriguez/pry-byebug/issues/110
可悲的是,这两个问题仍未解决,但一位用户确实表示有一种方法可以使用该功能“猴子补丁”问题print_traceback
。在 gem 的文件中定位到print_traceback
函数后,我尝试实现这个猴子补丁。可悲的是,它对我不起作用。 where.rb
bye-bug
ruby - 什么是 byebug 版本的 pry 的 whereami?
在 Ruby 中,我们有一个 gembyebug
和一个 gem pry
。
在pry
中,您可以键入whereami
以查看您在binding.pry
会话中的位置。
你怎么做同样的事情byebug
?
ruby-on-rails - 在测试模式下没有来自 ActiveRecord 的 SQL 日志和 byebug
在我的测试环境中,Rails 6 中带有 ActiveRecord 的 Byebug 没有按预期记录。
当我运行测试并使用 byebug 暂停执行时,ActiveRecord 不会将查询记录到控制台。例如,如果我键入,Candidate.second
我看不到 SQL 输出:
我想看到什么,如果我在 Rails 控制台的开发环境中运行相同的查询,我会看到什么:
我查看了有关 ActiveRecord 和 ByeBug 的文档,但似乎无法解决这个问题。任何帮助表示赞赏!
重现步骤
将调试器语句扔到控制器中,然后运行测试:
使用 byebug 时,ActiveRecord 不会将查询记录到控制台中。例如,如果运行一个命中控制器操作的测试:
从终端:
rails test test/controllers/jobs_controller.rb