Tag: 回溯

如何使backtrace()/ backtrace_symbols()打印函数名?

Linux特定的backtrace()和backtrace_symbols()允许你产生程序的调用轨迹。 但是,它只打印function地址,而不是我的程序的名称。 我怎样才能让他们打印函数名称呢? 我试着用-g和-ggdb编译程序。 下面的testing用例只是打印这个: 后退———— ./a.out()[0x8048616] ./a.out()[0x8048623] /lib/libc.so.6(__libc_start_main+0xf3)[0x4a937413] ./a.out()[0x8048421] ———————- 我想要前两个项目也显示函数名称, foo和main 码: #include <execinfo.h> #include <string.h> #include <errno.h> #include <unistd.h> #include <stdlib.h> static void full_write(int fd, const char *buf, size_t len) { while (len > 0) { ssize_t ret = write(fd, buf, len); if ((ret == -1) && (errno != EINTR)) break; buf […]

获取GDB中所有线程的回溯

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

如何让PHP在出错时产生回溯?

尝试使用其默认仅限当前行错误消息来debuggingPHP是非常可怕的。 如何在发生错误时让PHP产生回溯(堆栈跟踪)?

Win32 – 从C代码回溯

我目前正在寻找一种方法来获取Windows下的回溯信息,从C代码(没有C + +)。 我正在构build一个跨平台的C库,带有引用计数内存pipe理。 它还有一个集成的内存debugging器,提供有关内存错误的信息( XEOS C Foundation Library )。 发生故障时,debugging器启动,提供有关故障的信息以及涉及的存储器logging。 在Linux或Mac OS X上,我可以查找execinfo.h以使用backtracefunction,因此我可以显示有关内存故障的其他信息。 我在Windows上寻找相同的东西。 我见过如何在C中获取堆栈跟踪? 在堆栈溢出。 我不想使用第三方库,所以CaptureStackBackTrace或StackWalkfunction看起来不错。 唯一的问题是,我只是不知道如何使用它们,即使使用Microsoft文档。 我不习惯Windows编程,因为我通常在POSIX兼容系统上工作。 这些function有什么解释,也许是一些例子? 编辑 我现在正在考虑使用DbgHelp.lib函数,因为似乎有一点点的开销… 以下是我迄今为止所尝试的: unsigned int i; void * stack[ 100 ]; unsigned short frames; SYMBOL_INFO symbol; HANDLE process; process = GetCurrentProcess(); SymInitialize( process, NULL, TRUE ); frames = CaptureStackBackTrace( 0, 100, stack, NULL ); […]

显示正在运行的Python应用程序的堆栈跟踪

我有这个不时被卡住的Python应用程序,我找不到在哪里。 有没有什么方法可以告诉Python解释器显示正在运行的确切代码? 某种即时堆栈跟踪? 相关问题: 从Python代码中的方法打印当前的调用堆栈 检查一个正在运行的进程正在做什么:打印一个未经修补的Python程序的堆栈跟踪