backtrace

    2热度

    1回答

    我有一个已经明确分配堆栈的线程池(即使用pthread_attr_setstack)。 是否可以在堆栈上使用像gnulib的backtrace & backtrace_symbols? 谢谢。

    6热度

    2回答

    我想用LD的--build-id选项,以构建信息添加到我的二进制文件。但是,我不确定如何在程序中提供这些信息。假设我想编写一个程序,在每次发生异常时写入回溯,以及解析此信息的脚本。该脚本读取程序,并在回溯里打印的地址搜索的符号表(我被迫使用这种脚本,因为该程序是静态链接和backtrace_symbols不工作)。为了使脚本正常工作,我需要将构建版本的程序与创建回溯的程序的构建版本进行匹配。如何从

    0热度

    1回答

    我知道StackWalk64像所有dbghelp函数一样是单线程的,因为它在MSDN文档中有明确说明。 http://msdn.microsoft.com/en-us/library/windows/desktop/ms680650(v=vs.85).aspx “所有DbgHelp函数,比如这个,都是单线程的,因此,从多个线程调用这个函数可能会导致意外的行为或内存损坏,为了避免这种情况,您必须同步

    2热度

    1回答

    我遇到非常奇怪的行为(对我来说)。根据我的理解,一旦执行通过一次剪切,它就不能回溯到它之上。但这正是代码所做的。有人可以解释为什么这样做吗? 下面是代码: example([],[]). example([X,Y,Z|Tail],[Z|NewTail]) :- X < Y, example(Tail,NewTail). example([X,Y,Z|Tail],[X|New

    3热度

    1回答

    我编译使用GCC的选项-O0 -g3所有源文件,然后我跑了GDB相应的二进制文件。收到SIGABRT后,我进行了回溯。 下面是从运行 “崩溃” 输出在GDB中: terminate called recursively terminate called recursively terminate called after throwing an instance of 'std::out_of

    3热度

    1回答

    我正在尝试执行以下操作 - 为pthreads库编写一个封装器,该封装器将在每次调用其每个API时记录一些信息。 我想记录的一条信息是堆栈跟踪。 以下是原始代码中的最小片段,可以按原样编译和运行。 初始化(文件libmutex.c): #include <execinfo.h> #include <stdio.h> #include <stdlib.h> #include <pthread.

    6热度

    2回答

    我想在我的Android NDK应用程序中捕获SIGSEGV等信号以进行调试。为此,我建立了一个被称为的sigaction。 我现在正试图获得该通话的堆栈。问题是_Unwind_Backtrace只适用于当前堆栈,sigaction在它自己​​的堆栈中运行。 那么,有没有办法让接收到信号的执行指针堆栈? (基本上告诉_Unwind_Backtrace放松另一个堆比目前?) 我要指出的是: 使用ba

    2热度

    1回答

    我在写一些存储每个内存分配的回溯的代码。然后,我将这些列表写入文件进行离线分析。在win32中,我使用_AddressOfReturnAddress,然后手动创建回溯。由于每次运行的地址都是随机的,因此我使用GetModuleInformation和lpBaseOfDll来获取基地址。这对于没有FPO的x86很有效,这对我来说已经足够了。然后我使用win32 API加载PDB将地址转换为函数名称。

    3热度

    1回答

    这个波纹管代码会在最后一行产生Aborted(核心转储)。 代码: #include <stdio.h> #include <malloc.h> int main() { char *ptr; ptr=malloc(sizeof(char)*10); free(ptr); free(ptr); // core dumped

    78热度

    2回答

    在GDB中是否有与Windbg的“!process 0 7”相同的命令? 我想提取转储文件中的所有线程及其在GDB中的回溯。 “info threads”不输出堆栈跟踪。那么,有没有什么命令呢?