我有一个看起来像这样的函数:
def search_street_addresses(query, limit: 100)
if query.is_a? String
query = @address_parser.parse(query)
fail ArgumentError, "Invalid address string" if query.nil?
end
# ...
它是这样称呼的:
begin
results = @ndi.search_street_addresses(query)
rescue ArgumentError
raise CommandError, "Failed to parse address"
end
它在我的机器上完美运行。我已经用调试器逐步完成了代码,一切都按预期工作。问题是在同事的机器上(使用与我完全相同的代码和完全相同的 Ruby 版本)发生了看似不可能的事情。在调用@ndi.search_street_addresses(query)
和函数的第一行之间,ArgumentError
引发了 an 。我插入了一个这样的断点:
begin
require "byebug"; byebug
results = @ndi.search_street_addresses(query)
# ...
并试图进入该功能,但在我ArgumentError
第一次采取之后引发了step
,而我从未进入过该功能。我还在函数中设置了一个断点:
def search_street_addresses(query, limit: 100)
require "byebug"; byebug
if query.is_a? String
# ...
但是在ArgumentError
没有触发断点的情况下引发。这只发生在他的机器上,一切都在我的机器上完美运行。我不知道如何调试它,因为ArgumentError
它似乎是在 Byebug 范围之外的 Ruby 以太中的某个地方提出的。
所以; 我该如何调试?