问题标签 [backtrace]

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.

0 投票
1 回答
1174 浏览

linux - Linux(MIPS):查看核心转储时临时“更改”寄存器内容

我的应用程序中的一些线程位于优化的函数中,当我调试应用程序时,gdb 无法从这些函数中回溯。但是我查看了汇编程序,并且可以通过执行以下操作手动将堆栈部分展开到前一个函数的框架:

如果我正在进行实时调试,这非常有效,并且它成功地显示了完整的回溯。在查看核心转储时,我希望能够离线执行相同的操作。显然,在核心转储中戳寄存器的概念是没有意义的,但是有没有办法告诉 gdb“只使用这个值作为寄存器”,这样我就可以做类似的回溯?

0 投票
1 回答
74 浏览

ruby-on-rails - 堆栈跟踪的其余部分在哪里?

我有一个引发错误的测试。为了追查问题,我最终将此方法添加到名为 NodeAffiliation 的模型中:

然后我得到这个错误:

但 audit_test.rb 正在这样做:

不知何故,创建一个表单也会创建一个 NodeAffiliation,但这些步骤似乎在回溯中丢失了。任何想法为什么和/或如何获得它们?

0 投票
1 回答
21978 浏览

c++ - 在 C++ 中打印完整的回溯

我想以与 gdb 中类似的格式从 Linux 中的 C++ 程序转储回溯。为此,我尝试使用 backtrace() 和 backtrace_symbols() 函数。这些返回的函数名称和偏移量。我可以使用 __cxa_demangle() 函数来获取可读的函数名称。

有什么方法可以获取文件/行位置,就像 gdb 完成的那样?

0 投票
1 回答
186 浏览

ruby - 从回溯中获取接收者信息

从错误回溯$!.backtrace中,您可以提取每个步骤的方法名称。我想进一步提取每个方法调用的接收者。我确信有办法做到这一点,因为我看到了具有此功能的宝石。

上面提到的 gem 似乎正在使用Kernel.set_trace_func,并记录binding信息。但是对所有方法调用执行此操作会显着减慢程序的运行速度。如何有选择地记录binding与导致错误的调用堆栈相关的信息?

0 投票
1 回答
575 浏览

d - 如何在 D 回溯中显示行号?

我在 D 中有以下示例代码:

我用 DMD 编译了这段代码(在 OS X 上使用 v2.056)。当我运行它时,它显然崩溃了:

有没有办法在回溯中获取行号而不是位置?我可以看到崩溃的行号(5in core.exception.RangeError@test(5)),但它只是回溯的顶部。我可以得到里面的行号f()main()

0 投票
2 回答
3194 浏览

c++ - 如何修复 C++ 中的回溯行号错误

我想跟踪有关程序捕获异常的一些信息时遇到问题。

我使用了以下功能:

输出是这样的:

所有信息(命名空间、类名和方法名)都很好。但唯一的问题是行号是错误的。

如何修复回溯中的行号?

0 投票
6 回答
40629 浏览

php - 如何将 PHP 回溯保存到错误日志?

我现在正在使用这个:

但我每次都必须反序列化它。有没有更好的方法来存储回溯?

0 投票
2 回答
2725 浏览

ruby-on-rails - RSpec 没有给我任何回溯

我试图用 rspec 进行回溯,但由于某种原因我无法让它工作。

这是测试文件:

这是我运行的命令:

这就是我得到的:

我的.rspec:

还有我在 spec_helper.rb 中的 RSpec 部分:

我尝试了使用和不使用“backtrace_clean_patterns”。

有人知道这里有什么问题吗?

0 投票
2 回答
4343 浏览

php - PHP json_encode 带有资源类型的 debug_backtrace()

目前,我有一个记录器,它记录错误和回溯。记录器通过 将回溯序列化为 JSON json_encode()

让我们看一些假设的代码......

如果您运行上面的代码,我们将看到如下内容:

警告: json_encode() [function.json-encode]:类型不受支持,在第 5 行的 /code/ch6gVw 中编码为 null [{"file":"/code/ch6gVw","line":8,"function" :"test","args":[null]}]

我们可以注意到这里发生了两件事:

  1. 记录器本身正在引起警告!坏坏坏!
  2. 记录的数据告诉我们我们向函数传递了一个空值?!?!

所以,我提出的解决方案是这样的:

结果看起来像Resource id #1 (gd)


然而,这可能会导致一些严重的问题。

  1. 我们需要以某种方式跟踪我们循环通过的数组,以避免在数组引用自身时陷入无限循环($GLOBALS往往会导致这种混乱)。
  2. 我们还必须转换对象属性的资源,但与数组不同,对象不是原始事物的副本,因此更改属性会更改活动对象。另一方面,它对clone()对象有多安全?
  3. 这样的循环不会严重减慢服务器的速度(回溯往往很大,不是)?
0 投票
2 回答
1290 浏览

c++ - 如何“解密”链接器方法名称?

我正在使用回溯来打印应用程序的堆栈跟踪,我得到了类似的东西

有没有办法将“链接器名称”转换为“源名称”并从偏移量中获取代码行号?

我想要回溯,看起来像这样:

UPD。

我知道,由于编译器的具体情况,这种技术可能有效,也可能无效或效果不佳。我想至少在 gcc 和 Visual c++ 中“解包”链接器符号。