问题标签 [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 回答
399 浏览

ruby-on-rails-3 - Rails 3.1.3 - backtrace_silencers 初始化文件错误

我在 backtrace_silencers 初始化文件中添加了以下内容:

发生异常时,我在 Rails 服务器中收到以下错误消息:

故障安全响应期间出错:错误的参数类型路径名(预期的正则表达式).../config/initializers/backtrace_silencers.rb:2:in `gsub'

这里以奇怪的 b/c gsub 为例:

http://api.rubyonrails.org/classes/ActiveSupport/BacktraceCleaner.html

知道发生了什么吗?

0 投票
1 回答
2081 浏览

ios - Main.m 中的 iOS SIGABRT(提供回溯)

在 main.m 中获取 SIGABRT 错误。我已经从控制台列出了回溯,看看是否有人可以为我指明正确的方向。

这是我能够复制的核心转储信息。SIGABRT 发生在我的 main.m 中的 autorelease 语句中

...

0 投票
4 回答
7819 浏览

c - x86_64 调用约定和堆栈帧

我试图理解 GCC (4.4.3) 为在 Ubuntu Linux 下运行的 x86_64 机器生成的可执行代码。特别是,我不明白代码如何跟踪堆栈帧。在过去,在 32 位代码中,我习惯于在几乎每个函数中看到这个“序言”:

然后,在功能结束时,会出现一个“尾声”

或者干脆

它完成了同样的事情:

  • 将堆栈指针设置为当前帧的顶部,就在返回地址的下方
  • 恢复旧的帧指针值。

在 64 位代码中,正如我通过 objdump 反汇编看到的那样,许多函数不遵循这个约定——它们不推送 %rbp 然后将 %rsp 保存到 %rbp,像 GDB 这样的调试器如何构建回溯?

我的真正目标是尝试找出一个合理的地址,当执行到达程序中任意函数的开头时,将其视为用户堆栈的顶部(最高地址),堆栈指针可能已向下移动。例如,对于“顶部”,argv 的原始地址是理想的——但我无法从 main 调用的任意函数访问它。起初我以为可以使用旧的回溯方法:追逐保存的帧指针值,直到保存的值为 0——然后,之后的下一个可以算作最高实用值。(这与获取 argv 的地址不同,但它可以——比如说,找出 _start 或任何 _start 调用的堆栈指针值[例如,__libc_start_main]。)现在,我不知道

谢谢。

0 投票
2 回答
2400 浏览

c - Backtrace 如何在 Linux x86_64 上工作?

我有几个问题:

  1. int backtrace(void **buffer, int size); 这里的缓冲区是指针数组。return 上的数组元素作为 return 指向栈的每一帧。那么,backtrace() 内部调用 malloc() 的次数是帧数吗?为什么这是为了?
  2. 上面分配的内存不是从 backtrace() 中 freed() 的,那么,谁来释放这块内存呢?
  3. 有什么办法可以避免来自 backtrace() 内部的 malloc()?
  4. 我在哪里可以找到 backtrace() 源代码?
  5. 我如何编写代码以在程序集中进行回溯?
0 投票
3 回答
1090 浏览

java - Java调试中的回溯

我一直在寻找在进行 Java 调试时是否可以回溯的答案。例如,如果我有代码:

如果我遇到异常,我想回去。不仅像丢弃框架,而且还恢复对堆所做的实际更改。目前有可能吗?

提前致谢。

0 投票
1 回答
587 浏览

arm - any sample code for backtrace on ARM9?

i want to write a code which will work like backtrace utility on ARM9 architecture.

i did come across the code back trace for ulibc in arm. But from above code i want to know the details of data structure layout and parameter used in above code. Can anyone throw some light on the above.

thanks in advance.

0 投票
1 回答
756 浏览

c++ - make_shared() 的可调试替换

使用 gcc 4.6.2,如果构造函数抛出异常, make_shared() 会给出无用的回溯(显然是由于一些重新抛出)。我正在使用 make_shared() 来节省一些输入,但这是显示停止器。我创建了一个允许正常回溯的替代make_shrd() 。我正在使用 gdb 7.3.1。

我担心的是:

  1. make_shared() 下的不良回溯不知何故是我自己的错
  2. 我的替代品 make_shrd() 会给我带来一些微妙的问题。

这是一个演示:

编译:

调试:

make_shared() 回溯是垃圾,不会显示堆栈到异常点。所有其他选项都提供了合理的回溯。

提前感谢您的帮助和建议。

0 投票
1 回答
755 浏览

android - Android NDK 调试和回溯中的问号

在我多说之前,让我先说明该软件非常健全,它取自 Android 示例并且不会崩溃 :)。

我的团队最近一直在努力从 android 获得一些理智的回溯。我们确实从 LibC 中获得了输出,并且……这似乎是我们从中获得有效回溯的唯一组件。其他任何东西都只会产生问号和浅回溯(所以它通常一开始就中断??,除此之外什么都没有显示,所以我们通常看到 - 例如 - 只有vsnprintf和......就是这样。

我们一直在试验,最终创建了一个几乎完全从样本中复制的全新项目:native-activity,几乎没有修改:

  • AndroidManifest.xml 设置了正确的标志:

    /li>
  • build.xml 有一个预构建规则:

    /li>
  • Application.mk有一个定义:

    /li>
  • 甚至Android.mk文件也进行了一些调整:

    /li>

我们尝试了-gstabs+and -g -ggdb,但它仍然给了我们相同的回溯:

毫无疑问,第二个调用是本地代码,很可能ALooper_pollAll是调用 libc 的epoll_wait. 但没有参考达到android_main.

代码非常好。我可以点击c并让它运行几个小时而不会发生任何崩溃,但停止它并打印回溯 - 无论何时 - 总是返回相同的两行。

我们将非常感谢所有的帮助和建议;我们的产品遇到了一些麻烦,而且……我们现在能想到的唯一方法是真正的中世纪。

0 投票
0 回答
216 浏览

gdb - 比较 gdb 回溯的算法/代码

我需要在某种数据库中找到回溯的重复项(我有文本形式)。理想情况下,应该有一种快速查找方法(基于散列?)和一种更慢更准确的方法。

我不想要一个完整的崩溃报告系统,只是比较回溯的部分。但是使用来自这样一个(开源)系统的代码是有意义的。

到目前为止,我发现的只是复杂的解决方案:

任何建议如何做到这一点?

0 投票
2 回答
6918 浏览

gdb - 如何解释回溯地址以使用 GDB 进行调试

我正在使用 backtrace() 和 backtrace_symbols() 以如下格式输出 SIGSEGV 和其他信号的回溯:

在这种特殊情况下,第 7 帧对我来说很好,尽管第 1-6 帧给了我一些“+x”地址。

如何在反汇编中为“+0x6f42a”和 GDB 中的其他地址获取准确的行?什么框架#0,没有描述的模块,是什么意思?