问题标签 [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.
rspec - 如何缩短 RSpec 2 中测试失败的回溯?
当我的规格遇到错误时,我会收到如下消息:
我正在运行 Ruby 1.0.2、rails (3.0.3) 和 rspec (2.3.0)。M .rspec 配置文件只指定了两个选项:
--drb --color
如何关闭扩展跟踪?
java - java:打印当前回溯
有没有办法在 Java 中添加一个命令来添加当前的回溯?
我正在编写一个 red5 应用程序,并且 appDisconnect 函数被调用了两次。每当用户更换房间时。我想在 appDisconnect 函数的开头添加一个显示当前回溯的函数,然后我可以看到调用它的内容。
谢谢
ruby - 在 Ruby 解释器段错误之后,是否可以从 corefile 中获取 Ruby 回溯?
注意:我使用的是在使用 libxml-ruby gem 时遇到的段错误来说明问题,但我已经用所述 gem 解决了我的问题。这个问题的真正含义是从 gdb 中查看带有核心文件的 Ruby 回溯(即解释器在 Ruby 代码无法处理异常时打印的相同内容),解释器本身遇到分段错误。
在生成 XML 文档时,我遇到了一个奇怪的段错误,其中包括:
更新 1:这个 segfaults 在 vanilla Ruby (MRI) 下也是如此。
我打开了 corefiles 并查看了 gdb 中的回溯(见问题的结尾)。我可以看到解释器在哪里崩溃,谷歌搜索会导致很多有希望的结果。除了解释器回溯之外,我希望看到的是 Ruby 代码本身的回溯(即从解释器的角度来看的回溯)。
我希望在 gdb 中加载核心将允许我调用一些解释器函数来打印出解释代码的堆栈。
有任何想法吗?
对于好奇的人,这是核心和回溯:
c - gdb 奇怪的回溯
我的程序是用dietlibc 静态编译的。它在 ubuntu x64 上编译(使用 -m32 标志为 x86 编译)并在 centos x86 上运行。
编译后的大小只有100KB左右。我用 -ggdb3 编译它,没有优化标志。
我的程序使用 signal.h 处理 SIGSEGV 信号,然后调用 abort()。
该程序运行几天没有问题,但有时会出现段错误。这是当我得到我不理解的奇怪回溯时:
c++ - C++ 程序在 gcc 中的 SIGSEGV 期间不处理任何函数调用或 printf
我在将堆栈跟踪输出到 stderr 或转储到日志文件时遇到问题。我正在使用 gcc 编译器(4.4.3)在 Kubuntu10.04 中运行代码。问题是在正常运行模式下(没有gdb),程序除了'Segmentation Fault' 不输出任何东西。我希望在下面的打印语句中输出回溯输出。当我使用我的应用程序运行 gdb 时,它会出现 printf/fprintf/(function call) 语句,然后由于以下语句而崩溃:
奇怪的是,如果我在同一个文件中调用一个崩溃的函数,它就可以正常工作,并且可以正常输出。但是如果程序在这个文件之外的函数中崩溃,它不会打印任何输出。因此,不会处理任何 printf 或文件转储语句或函数调用。我正在使用以下示例代码:
提前感谢您的帮助。
c - Win32 - C 代码的回溯
我目前正在寻找一种在 Windows 下从 C 代码(非 C++)获取回溯信息的方法。
我正在构建一个具有引用计数内存管理的跨平台 C 库。它还有一个集成的内存调试器,可以提供有关内存错误的信息(XEOS C Foundation Library)。
发生故障时,调试器会启动,提供有关故障的信息以及所涉及的内存记录。
在 Linux 或 Mac OS X 上,我可以查找execinfo.h
以使用该backtrace
功能,因此我可以显示有关内存故障的其他信息。
我在 Windows 上寻找同样的东西。
我已经看到如何在 C 中获取堆栈跟踪?关于堆栈溢出。我不想使用第三方库,所以CaptureStackBackTrace
orStackWalk
函数看起来不错。
唯一的问题是我不知道如何使用它们,即使使用 Microsoft 文档也是如此。
我不习惯 Windows 编程,因为我通常在兼容 POSIX 的系统上工作。
这些功能有哪些解释,也许还有一些例子?
编辑
我现在正在考虑使用CaptureStackBackTrace
from 的功能DbgHelp.lib
,因为它的开销似乎少了一点……
这是我到目前为止所尝试的:
我只是越来越垃圾。我想我应该使用除SymFromAddr
.
c - Windows 上的 StackWalk64 - 获取符号名称
好的,一天内关于 SO 的第二个问题。看起来Windows编程让我很开心......:S
我目前正在尝试在 Win32 可执行文件上获取函数调用堆栈。
今天早上,我也问了一个关于这个的问题:
现在,我很确定该StackWalk64
功能是实现这一目标的关键。我已经阅读了一些关于如何使用它的文章,以及 MS 文档。
它实际上在我的测试程序上显示帧,所以它有点工作......
问题是我无法从堆栈信息中检索符号名称。
我正在为此使用该SymGetSymFromAddr64
功能,带有UnDecorateSymbolName
. 但我只得到垃圾字符。
这是我的代码。希望它不要乱七八糟,因为我不习惯 Windows 编程:
实际输出为:
顺便说一句,堆栈地址总是0似乎很奇怪......任何帮助表示赞赏:)
谢谢大家!
编辑
我正在寻找一个普通的 C 解决方案,没有第三方库......
macos - 内核恐慌时的回溯
是否可以在不附加 gdb 的情况下获得 kext 的回溯,如在
如果我有恐慌日志?
不知何故像这样:
- 从 panic log 中获取 kext 导致 panic 的地址
- 生成 dSYM 文件
kextutil
- 将 dSYM 文件中的方法名称粘贴到紧急日志中以获取回溯?
c - 如何在内核模块代码中包含 C 回溯?
所以我试图找出哪些内核进程正在调用块驱动程序中的某些函数。我认为在 C 库中包含 backtrace() 会很容易。但是我无法加载回溯。
我复制了这个示例函数来显示回溯:
http://www.linuxjournal.com/files/linuxjournal.com/linuxjournal/articles/063/6391/6391l1.html
所有的编译尝试在某个地方或另一个地方都有错误,即找不到文件或未定义函数。
这是最接近的。
在 Makefile 我放了编译器指令:
如果我忽略了第二个,-I/usr/include,那么编译器会报告它找不到所需的头文件 execinfo.h。
接下来,在我想要执行回溯的代码中,我从示例中复制了函数:
我稍后在块驱动程序函数中调用了这个函数,错误的第一个迹象发生在该函数中。简单地:
所以当我编译它时,出现以下错误:
注意:block26.c 是我希望从中获取回溯的文件。
当 backtrace 和 backtrace_symbols 被编译到 .ko 模块中时,是否有明显的原因保持未定义?
我猜是因为我使用了编译器 include execinfo.h,它驻留在计算机上并且没有加载到模块中。
至少可以说,这是我没有受过教育的猜测。
任何人都可以提供帮助以在模块中加载回溯功能吗?
感谢您查看此查询。
我正在开发Debian。当我取出函数等时,模块编译得很好,几乎可以完美运行。
来自 ndasusers
android - 在 Eclipse 中从 dalvikvm (Android) 解析调试信息
我正在 Eclipse 中制作一个使用 SQLite 的小型 Android 应用程序。它工作得很好。当我出于好奇通过 Logcat 浏览一些消息时,我发现了这些消息的重复:
谷歌搜索我发现错误是由于我忘记了cursor.close()
. 但是,为了将来参考,我怎样才能让 DDMS/Logcat 告诉我这个错误是关于哪个游标的?此时我知道它是哪一个(我手动搜索了所有源代码),但是随着我的代码变得越来越大,让 DDMS 为我指明可以提取数据的方向会很好。至于现在,调试信息窗口中转储的所有内容对我来说都是不可理解的。