使用 byebug 进行调试时如何扩展堆栈?

2024-02-22

我目前收到如下错误:

NoMethodError: undefined method `debug' for nil:NilClass
    /mnt/hgfs/Dropbox/Company/Project/lib/project/misc.rb:23:in `debug'
    /mnt/hgfs/Dropbox/Company/Project/lib/project/validation/google_geocoding_validation_engine.rb:49:in `block in compare_addresses'
    /mnt/hgfs/Dropbox/Company/Project/lib/project/validation/google_geocoding_validation_engine.rb:43:in `each'
    /mnt/hgfs/Dropbox/Company/Project/lib/project/validation/google_geocoding_validation_engine.rb:43:in `compare_addresses'
    /mnt/hgfs/Dropbox/Company/Project/lib/project/validation/google_geocoding_validation_engine.rb:32:in `valid?'
    /mnt/hgfs/Dropbox/Company/Project/specs/project/validation/google_geocoding_validation_engine_spec.rb:56:in `block (2 levels) in <module:Validation>'
    /home/tomas/ruby2/lib/ruby/2.0.0/minitest/unit.rb:1301:in `run'

我想我会尝试使用byebug https://github.com/deivid-rodriguez/byebug找出该物体为何存在nil因为它不应该是nil。我放置了byebug就在错误行的上方:

def debug(&block)
  if @logger.nil?
    byebug
  end

  @logger.debug(@logger_name, &block)
end

并进行了测试。我被扔到了byebug调试界面,可以确认该对象确实是nil。问题是我无法爬上堆栈:

(byebug) up
*** Adjusting would put us beyond the oldest (initial) frame.
(byebug) down
*** Adjusting would put us beyond the newest (innermost) frame.
(byebug) backtrace
--> #0  AddressKit::Misc::Logging.debug(block#Proc) at /mnt/hgfs/Dropbox/Kvantel/Address Kit/lib/addresskit/misc.rb:25
Warning: saved frames may be incomplete; compare with caller(0)

为什么我不能上堆栈?这是 byebug 的问题还是与 MiniTest 不兼容?


byebug >= 1.5.0 的答案

在这种情况下打印和移动调用堆栈应该只是工作并且OP不会有这个问题。

byebug

Byebug 不会开始跟踪调用堆栈信息,直到Byebug.start被调用,这是由内部调用的byebug命令。因此,当您收到调试提示时,仅保存了一个调用堆栈帧,这就是您收到该消息的原因:

Warning: saved frames may be incomplete; compare with caller(0)

这就是为什么你不能动up or down: 只有一帧。

为了正确地导航堆栈,您需要通过删除来从更高的位置启动 ByebugByebug.start无论你想开始跟踪调用堆栈信息。例如,在第 56 行之前google_geocoding_validation_engine_spec.rb。如果您想要完整的堆栈信息,您可以通过运行 byebug 可执行文件从一开始就运行 byebug:

byebug rake

或者无论如何你正在运行你的规格。

如果您仍有问题,请告诉我!

希望这可以帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 byebug 进行调试时如何扩展堆栈? 的相关文章

  • 使用“回形针”gem 和 Ruby on Rails 3 时出现问题

    我在运行 Snow Leopard v1 6 5 的 MacO 上使用 Ruby on Rails 3 我想使用 回形针 gem 所以我将它包含在我的 Gemfile 中 如下所示 gem paperclip gt 2 3 然后 在终端中运
  • 从 Ruby 运行 shell 命令:在显示输出时捕获输出?

    我有个问题 我想从另一个 ruby 脚本运行一个 ruby 脚本并捕获它的输出信息 同时让它也输出到屏幕上 runner usr bin env ruby print Enter your password password gets ch
  • 从架构中删除表 - Rails

    我想删除架构中的一个表 我在第一次启动项目时创建了数据库并希望删除该表 这样做的最佳方法是什么 I tried rails g migration drop table installs但这只会创建一个空迁移 Schema create t
  • 向 Rails 应用程序中的内置类添加方法

    我想向 Rails 应用程序中的 Array 类添加一个方法 我应该把这个方法放在哪里 编辑得更清楚 显然我把它放在某个文件中 但是我如何告诉 Rails 应用程序在哪里可以找到它 执行此操作的一种方法是在以下位置创建一个文件lib rai
  • 尝试使用 Rails 和 PostgreSQL 生成模型时,命令挂起且没有错误

    使用该命令时 rails generate model Event name string 什么也没发生 我必须按 CTRL c 我使用的版本是 红宝石 2 1 1p76 导轨4 1 0 PostgreSQL 9 3 4 Mac OS X
  • Ruby 依赖注入库

    我一直在研究一些 Ruby 依赖注入库 特别是 我检查了Needle http needle rubyforge org and Copland http copland rubyforge org 它们已经存在很长一段时间了 但用途并不多
  • Ruby 未绑定方法:是否可以强制绑定到其他类的实例?

    我想知道我是否可以强迫这种情况发生 class A def bomb bomb end end class B end bomb A instance method bomb b B new bomb bind b 目前它抛出错误 Type
  • SSL_connect 返回=1 errno=0 状态=SSLv3 读取服务器证书 B:证书验证仅在代理时失败

    这篇文章几乎重复了许多其他帖子 包括Rails 4 和 Ruby 2 Net HTTP SSL 请求 OpenSSL SSL SSLError SSL connect returned 1 errno 0 state SSLv2 v3 re
  • Rails 中的 PDF 导出

    我需要将包含一些图表的 HTML 页面导出为 PDF 有哪些好的 gem 可以做到这一点 PDFKit http railscasts com episodes 220 pdfkit http railscasts com episodes
  • 可以覆盖/实现的 ruby​​ 运算符列表

    是否有可以覆盖的所有 ruby 运算符的列表 不是那些不能的 Here s Ruby 运算符表 http phrogz net programmingruby language html table 18 4 方法和可重载的有 Elemen
  • 有没有人有 Ruby 和 Rake 的 Notepad++ 函数列表插件的解析规则

    我使用 Notepad 编辑 rake 文件 并且希望能够使用函数列表插件 我无法在线找到任何解析规则 并且 语言解析规则 对话框没有非常清晰的记录 我正在将方法解析到以下列表中 但还想显示任务 Function Begin t def t
  • 通过推送通知唤醒

    Suppose 有一些对象 例如 一个数组a 和依赖于对象的条件 例如 a empty 当前线程以外的某些线程可以操作该对象 a 因此条件评估值的真实性会随着时间的推移而变化 如何让当前线程在代码中的某个时刻休眠 并在条件满足时通过推送通知
  • 如何向 Time.now 添加两周?

    如何在 Ruby 中向当前 Time now 添加两周 我有一个使用 DataMapper 的小型 Sinatra 项目 在保存之前 我有一个字段填充了当前时间加上两周 但未按需要工作 任何帮助是极大的赞赏 我收到以下错误 NoMethod
  • yard 0.7.3 无法在 Markdown 和 Textile 中构建我的自述文件

    我决定将我的项目中的 README 文件转换为 Markdown 并一直使用yard 验证文档是否正确呈现 所以我安装了 rdiscount 将 README 更改为 README md 并尝试 yard doc README md 这给了
  • Ruby 中的任务/未来

    代表潜在延迟的异步计算并且可以订阅其完成的模式的惯用 Ruby 模拟是什么 即类似于 NET 的东西System Threading Task 或Python 3 xconcurrent futures future 请注意 这并不一定意味
  • 如何从 ruby​​ 中的字符串名称创建类实例?

    我有一个类的名称 我想创建该类的一个实例 以便我可以循环该类的架构中存在的每个 Rails 属性 我该怎么做呢 我的名称是我想要检查的类的字符串 我想我需要实例化一个类实例 以便我可以 循环遍历它的属性并打印它们 在 Rails 中你可以这
  • 如何使用本地安装的gems执行Ruby程序?

    我已经使用安装了我的依赖项 bundle package 然后将它们传输到离线服务器并运行 gt bundle install local Using mime types 1 19 Using rest client 1 6 7 Usin
  • 使用 attr_accessor 动态创建类属性

    在Ruby中 有没有办法动态地将实例变量添加到类中 例如 class MyClass def initialize create attribute name end def create attribute name attr acces
  • REXML - 如何提取单个元素

    我正在用 ruby 编写一些验收测试 其中涉及断言响应 XML 中值的存在 我的 XML 是这样的
  • Rails:named_scope、lambda 和块

    我认为以下两个是等效的 named scope admin lambda company id conditions gt company id company id named scope admin lambda do company

随机推荐

  • 处理 iPad Mini 屏幕尺寸

    新款iPad Mini的屏幕尺寸为7 9英寸 它有视网膜显示屏吗 它会自动扩展现有的 xib 和 Storyboard 还是我们必须为每个版本创建两个版本 我们是否会像处理 iPhone 5 一样处理它 如何创建定义或条件来查看设备是否正在
  • 如何将 ASCII char 转换为其 ASCII int 值?

    我想将 char 转换为它的ASCII http en wikipedia org wiki ASCIIint 值 我可以用所有可能的值填充一个数组并与其进行比较 但这对我来说似乎不正确 我想要类似的东西 char mychar k pub
  • Ruby 独立脚本中的 RoR 环境

    我想运行一个独立的 ruby 脚本 在其中需要使用我的 RoR 环境 具体来说 我需要我的模型扩展 ActionMailer 和 ActiveRecord 我还需要从我的database yml 中读取数据库配置 我该怎么办 最简单的方法是
  • C++ std regex问号问题

    我在使用 std 正则表达式时遇到了麻烦 我无法使问号量词起作用 对 regex match 的调用将始终返回 0 我还尝试了 0 1 它的行为也不像我预期的那样 它的行为就像 量词 这是我的代码 include
  • 如何将表格水平和垂直放置在div的中心

    我们可以将图像设置为背景图像 div like div div 我需要在房间的中央放一张桌子 div 水平和垂直 有没有使用跨浏览器 div div
  • 混合身份验证失败! Facebook 返回无效的用户 ID

    我正在使用 Hybridauth 库在我的网站中创建一个带有 facebook 链接的注册 我在本地主机中创建并测试了代码 一切都运行良好 但是当将所有内容移动到服务器时 它不起作用并给了我这个错误Authentication failed
  • ENOENT 错误 - 安装 aws-cdk 节点模块

    运行命令后 sudo npm i g aws cdk 给出错误 npm ERR Linux 4 4 0 151 generic npm ERR argv usr bin nodejs usr bin npm i g aws cdk npm
  • 方法 [] 被调用为 null

    我是颤振新手 我在 YouTube 和 Google 上看到了很多教程 但找不到解决方案 我该如何解决这个错误 import package flutter material dart import dart ui import dart
  • 在 C# 中使用 Delphi 的结构数组和字符串

    我一直在尝试通过以下方式调用在 Delphi 中创建的方法 function Func1 arrParams array of TParams Integer stdcall type TParams record Type int Nam
  • 如何在 php 中将 stdin 处理为 stdout?

    我正在尝试编写一个简单的 php 脚本来获取数据stdin 处理它 然后将其写入stdout 我知道 PHP 可能不是处理此类事情的最佳语言 但有我需要的现有功能 我试过了 但它不起作用 我这样调用它 echo e ndata n php
  • Rails:Selenium::WebDriver::Error::WebDriverError:不可执行:'chromedriver-helper'

    我两天前设置了 Rails 环境 我以为一切进展顺利 但是当我运行时rake test由于此加载错误 命令已中止 Bundler GemRequireError There was an error while trying to load
  • 使用浏览器获取客户端计算机中目录中所有文件的列表

    虽然这里的用例并不那么重要 但实际上的用途很重要 我想通过浏览器浏览用户本地文件系统 就像我们通过
  • Outlook Web 添加 - 更改标题栏的颜色

    我正在尝试更改插件中标题栏的颜色 我在 xml 文件中看到它在标题栏上生成标题 挂接到标题栏的正确方法是什么 我看到 C 有类似的问题有什么方法可以更改 VSTO Outlook 添加中的边框 标题背景吗 https stackoverfl
  • 可下载字体 - 无法下载某些谷歌字体

    我正在玩可下载字体 api https developer android com guide topics ui look and feel downloadable fonts html 我下载了谷歌示例应用程序 https githu
  • Access 2013 中的 DMedian,未返回任何值

    我在 MS Access 2013 中有以下查询 但不返回中值 字段 IU 始终为 NULL 空白 或 1 列 GM 是一个介于 5 和 5 之间 格式为 0 0000 的数字 其中偶尔会出现 NULL 值 SELECT IU DMedia
  • 用于子列表/部分匹配的 Hamcrest 匹配器?

    假设我有一个实际的列表 1 2 3 4 我想检查它是否包含子列表 2 3 即顺序也很重要 是否有现有的匹配器可以做到这一点 有一个名字不好听的hasItems只检查实际列表是否匹配的方法one预期列表中的项目 如果可以的话 自己写一个 se
  • 如何添加两个背景图像 - 从中​​心列向左和向右

    我有这个CSS wrapper1 min width 1020px min height 100 wrapper2 height 100 background url img1 jpg 100px 300px no repeat url i
  • 如何使用 SPARQL 查询生成适合特定节点类型或/和边类型的所有三元组?

    这是一个后续问题 如何使用SPARQL查询列出并统计图数据中不同类型的节点和边实体 https stackoverflow com questions 24187351 how to list and count the different
  • 不等式约束模糊性

    我在使用自动布局和约束调整 UIView 大小时遇到 问题 我想更改原点 小于或等于原始值 和宽度 大于或等于原始值 但我得到了这个 不等式约束模糊性 你有解决这个问题的想法吗 thanks 我尝试为 3 5 显示器缩小超过 1 个垂直间距
  • 使用 byebug 进行调试时如何扩展堆栈?

    我目前收到如下错误 NoMethodError undefined method debug for nil NilClass mnt hgfs Dropbox Company Project lib project misc rb 23