backtrace相关内容
是否可以在不惊慌的情况下打印回溯(假设启用了 RUST_BACKTRACE)?似乎唯一的方法是通过 panic! 调用.如果不是,有什么原因吗? 解决方案 Rust 使用 backtrace crate 来在发生恐慌时打印回溯(已在 PR #60852 中合并). 一个简单的例子可以在 crate 文档中找到 使用 backtrace::Backtrace;fn 主(){让 bt
..
新的 Rails 4.2 设置.我想抑制长错误回溯.在下面的回溯日志中,第一行对我来说就足够了,接下来的 4 行可以删除 ActionController::RoutingError(没有路由匹配 [GET] "/user"):actionpack (4.2.1) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'web
..
rails 控制台 默认使用 context.back_trace_limit=16 启动,只需输入 context.back_trace_limit=n 即可更改为您想要的任何内容代码>.问题是每次启动 rails c 时都必须输入它.我在哪里永久更改 context.back_trace_limit ?阅读更多有关 rails 控制台配置的文章表示赞赏. 解决方案 您必须使用以下内容创
..
当我的规格出现错误时,我收到如下消息: 供应商应拒绝重复名称失败/错误:user_with_duplicate_email.should_not be_valid预期有效?返回假,得到真#/home/kevin/.rvm/gems/ruby-1.9.2-p136@rails3tutorial/gems/rspec-expectations-2.3.0/lib/rspec/expectations
..
我的程序很恐慌,所以我按照它的建议运行了 RUST_BACKTRACE = 1 ,我明白了(只是一小段). 1:0x800c05b5-std :: sys :: imp :: backtrace :: tracing :: imp :: write :: hf33ae72d0baa11ed在/buildslave/rust-buildbot/slave/stable-dist-rustc-li
..
使用gcc 4.6.2,如果构造函数引发异常,make_shared()会给出无用的回溯(显然是由于重新抛出).我正在使用make_shared()节省一些键入内容,但这是show stopper.我创建了一个替代 make_shrd(),它可以进行正常的回溯.我正在使用gdb 7.3.1. 我担心: make_shared()下不好的回溯是我自己的错 我的替代品make_shrd(
..
我尝试在C ++程序的回溯中找到调用的确切行.现在,我正在使用这些行(来自backtrace的手册页)来获取跟踪: void * bt_buffer [1000];char ** bt_strings;int bt_nptrs = backtrace(bt_buffer,1000);bt_strings = backtrace_symbols(bt_buffer,bt_nptrs); 在b
..
我在信号处理程序中使用' backtrce()'和' backtrace_symbols_fd()'函数来生成用于调试的回溯(GDB不可用). 它们在x86桌面版(Ubuntu)上可以正常工作,但是在目标设备(基于ARM)上,Abort信号的回溯(由于双重释放错误)仅显示三个帧:信号处理程序还有两个来自libc,这对调试我们的代码没有用!SEGV上的回溯(例如使用错误的指针)确实会产生良好的
..
就程序而言,堆栈只是一堆内存. backtrace函数如何确定哪些堆栈字节是指令指针的返回地址,而不是那些仅是函数参数的地址,等等? 解决方案 就程序而言,堆栈只是一堆内存. 那是正确的.如果您对程序的结构一无所知,则将无法解开其堆栈. 最容易用于展开的结构是其中单个“帧指针"被展开的结构.保留寄存器以始终指向当前帧,并且该帧在已知偏移处包含上一个帧指针. 这是在i*
..
魔咒 LD_PRELOAD=/lib/libSegFault.so someapp 使用libSegFault.so运行someapp,从而提供关于SIGSEGV的回溯信息,如很多 除了使用类似signal(7)的方法导致SIGABRT调用SIGSEGV处理程序外,还有什么方法可以使libSegFault为assert(3)失败提供回溯信息? 解决方案 env SEGFAULT_
..
使用-fomit-frame-pointer(对于各种-O设置自动)时,执行回溯是有问题的.我想知道是否有一种方法可以在编译时确定使用此开关编译代码吗?在这种情况下,我可以在不明智的情况下输入#ifndef来防止回溯. 此-fomit-frame-pointer开关打开时,是否设置了宏? 谢谢 SetJmp 解决方案 我刚刚尝试过: gcc -E -fomit-fr
..
我现在正在使用此: error_log(serialize(debug_backtrace())); 但是我每次都必须反序列化它。有没有更好的方法来存储回溯? 解决方案 这应该会生成可读的字符串: error_log(print_r(debug_backtrace(),true)); 此外, debug_print_backtrace(
..
我希望对请求期间执行的每个查询进行追溯,因此我可以找到它们的来源并减少计数/复杂性。 我使用这很好的中间件代码片段来列出和查询时间,但是我不知道他们来自。 我在 django / db / models / sql / compiler.py 但明显的形式是获取django的本地版本并编辑该代码,我看不到如何锁定查询。我可以使用一个信号吗?似乎没有并不是每个查询都发出信号。 是否
..
我有一个带有数十个虚拟主机的专用服务器。我想确定哪个文件正在调用mail()函数,并将其全局记录下来。我需要这样的东西: [2013年2月13日星期三10:42:39 2013] mail()从/ var / www调用/example1.php在第70行 [2013年2月13日星期三10:42:40]从/var/www/example2.php在第70行 我不能使用de
..
两个示例代码;首先将一些C ++代码调用到汇编中: /* test1.cc */ #include extern "C" void blah(); extern "C" void stuff() { printf( "This is a test\n" ); } int main( int argc, char *argv[] ) { blah(); r
..
我试图在我的Android NDK应用程序中捕获诸如SIGSEGV之类的信号以进行调试. 为此,我设置了一个称为的提示. 我现在正在尝试获取通话堆栈.问题在于_Unwind_Backtrace仅适用于当前堆栈,并且sigaction在其自己的堆栈中运行. 那么,有没有办法获取接收到信号的执行指针的堆栈? (基本告诉_Unwind_Backtrace展开当前堆栈以外的其他堆栈吗?)
..
我试图弄清楚如何在Mac OS X上的C ++应用程序中存储然后打印当前堆栈.主要问题似乎是当在主可执行文件中给定地址时,dladdr返回正确的符号.我怀疑这个问题实际上是一个编译选项,但是我不确定. 我尝试了Darwin/Leopard的回溯代码,但它调用了dladdr,并且与我自己的调用dladdr的代码具有相同的问题. 原始帖子: 目前,我正在使用以下代码捕获堆栈: int
..
以下是我想在运行"Red Hat Enterprise Linux 5.5(Tikanga)内核2.6.18-194.el5xen x86_64" OS的计算机上使用的源示例. 一般的想法是我想要某个线程的回溯,因此我正在为该线程引发SIGUSR1信号,并且处理程序进行backtrace()调用. 在以下情况下,FrameTwo函数在循环中调用malloc和free.每当为此特定线程发
..
我已经安装了PHPUnit和xdebug,并且在CLI的php.ini文件中,我已经: display_errors = On xdebug.default_enable = 1 我已经验证了使用交互式控制台创建错误时是否打印了xdebug回溯,但是当运行phpunit时发生错误时,是否没有回溯? 回溯发生了什么事? phpunit对我隐藏了吗?我缺少某些设置吗? 谢谢!
..
我知道函数debug_backtrace,但是我正在寻找一些易于使用的函数实现,例如GetCallingMethodName()?如果它也提供了方法的类(如果确实是方法),那将是完美的. 解决方案 debug_backtrace()函数是了解这一点的唯一方法,如果您很懒,这是您自己编写GetCallingMethodName()的另一个原因. 与懒惰作斗争! :D
..