问题标签 [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.
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
知道发生了什么吗?
ios - Main.m 中的 iOS SIGABRT(提供回溯)
在 main.m 中获取 SIGABRT 错误。我已经从控制台列出了回溯,看看是否有人可以为我指明正确的方向。
这是我能够复制的核心转储信息。SIGABRT 发生在我的 main.m 中的 autorelease 语句中
...
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]。)现在,我不知道
谢谢。
c - Backtrace 如何在 Linux x86_64 上工作?
我有几个问题:
- int backtrace(void **buffer, int size); 这里的缓冲区是指针数组。return 上的数组元素作为 return 指向栈的每一帧。那么,backtrace() 内部调用 malloc() 的次数是帧数吗?为什么这是为了?
- 上面分配的内存不是从 backtrace() 中 freed() 的,那么,谁来释放这块内存呢?
- 有什么办法可以避免来自 backtrace() 内部的 malloc()?
- 我在哪里可以找到 backtrace() 源代码?
- 我如何编写代码以在程序集中进行回溯?
java - Java调试中的回溯
我一直在寻找在进行 Java 调试时是否可以回溯的答案。例如,如果我有代码:
如果我遇到异常,我想回去。不仅像丢弃框架,而且还恢复对堆所做的实际更改。目前有可能吗?
提前致谢。
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.
c++ - make_shared() 的可调试替换
使用 gcc 4.6.2,如果构造函数抛出异常, make_shared() 会给出无用的回溯(显然是由于一些重新抛出)。我正在使用 make_shared() 来节省一些输入,但这是显示停止器。我创建了一个允许正常回溯的替代make_shrd() 。我正在使用 gdb 7.3.1。
我担心的是:
- make_shared() 下的不良回溯不知何故是我自己的错
- 我的替代品 make_shrd() 会给我带来一些微妙的问题。
这是一个演示:
编译:
调试:
make_shared() 回溯是垃圾,不会显示堆栈到异常点。所有其他选项都提供了合理的回溯。
提前感谢您的帮助和建议。
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并让它运行几个小时而不会发生任何崩溃,但停止它并打印回溯 - 无论何时 - 总是返回相同的两行。
我们将非常感谢所有的帮助和建议;我们的产品遇到了一些麻烦,而且……我们现在能想到的唯一方法是真正的中世纪。
gdb - 比较 gdb 回溯的算法/代码
我需要在某种数据库中找到回溯的重复项(我有文本形式)。理想情况下,应该有一种快速查找方法(基于散列?)和一种更慢更准确的方法。
我不想要一个完整的崩溃报告系统,只是比较回溯的部分。但是使用来自这样一个(开源)系统的代码是有意义的。
到目前为止,我发现的只是复杂的解决方案:
- https://wiki.ubuntu.com/Apport
- https://fedorahosted.org/abrt/wiki
- https://launchpad.net/bugzilla-traceparser
- https://crash-stats.mozilla.com/products/Firefox
任何建议如何做到这一点?
gdb - 如何解释回溯地址以使用 GDB 进行调试
我正在使用 backtrace() 和 backtrace_symbols() 以如下格式输出 SIGSEGV 和其他信号的回溯:
在这种特殊情况下,第 7 帧对我来说很好,尽管第 1-6 帧给了我一些“+x”地址。
如何在反汇编中为“+0x6f42a”和 GDB 中的其他地址获取准确的行?什么框架#0,没有描述的模块,是什么意思?