首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在i386上实现回溯

在i386上实现回溯
EN

Stack Overflow用户
提问于 2010-03-08 17:52:07
回答 6查看 324关注 0票数 4

我目前正在将我们的代码从alpha (Tru64)移植到C语言的i386处理器(Linux)上,在我研究移植我们的异常处理例程之前,一切都进行得相当顺利。目前我们有一个父进程,它产生很多子进程,并且当这些子进程中的一个致命的(未绑定的)时,我有捕获该进程的例程。

我目前正在努力寻找实现回溯例程的最佳方法,该例程可以在错误日志中列出函数地址,目前我的例程只打印导致异常的信号和异常限定符代码。

任何帮助都会很受欢迎,理想情况下,我会为所有处理器编写错误处理,但是在这个阶段,我只关心i386和x86_64。

谢谢

标记

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-03-08 20:04:13

来自execinfo.h的glibc函数backtrace()backtrace_symbols()可能会有用。

票数 2
EN

Stack Overflow用户

发布于 2010-03-08 18:28:42

你可以看看http://tlug.up.ac.za/wiki/index.php/Obtaining_a_stack_trace_in_C_upon_SIGSEGV。它涵盖了您需要的功能。但是,您必须针对libgdb和libdl进行链接,使用-rdynamic进行编译(在可执行文件中包含更多符号),并放弃使用某些优化。

票数 2
EN

Stack Overflow用户

发布于 2010-03-08 20:00:08

有两个GNU (non-POSIX)函数可以帮助您- backtrace()backtrace_symbols() -第一个返回函数地址数组,第二个将地址解析为名称。不幸的是,静态函数的名称无法解析。

为了让它正常工作,你需要使用-rdynamic标志来编译你的二进制文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2400424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档