backtrace 调试 代码执行的路径(调用栈)

原创 2017年05月21日 22:01:10

直接贴代码:

#include <execinfo.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
  
void myfunc3(void)
{
    int j, nptrs;
    #define SIZE 100
    void *buffer[100];
    char **strings;
  
    nptrs = backtrace(buffer, SIZE);
    printf("backtrace() returned %d addresses\n", nptrs);
  
    backtrace_symbols_fd(buffer, nptrs, STDOUT_FILENO);
}
  
void myfunc(void)
{
    myfunc3();
}
  
int main(int argc, char *argv[])
{
    myfunc();
    return 0;
}



 程序运行结果:
[home@root ~]$ g++ -rdynamic t.cpp -o t  

这里必须的参数是 -rdynamic 


嵌入式软件调试技术专题(1):软件调试理论

-
  • 1970年01月01日 08:00

gdb调试(四)函数调用栈之Backtraces

通过产看栈信息,我们可以了解栈内帧的编号或地址,通过选择帧我们可以移动到指定的帧内去产看信息。 1、查看栈信息 产看函数调用栈的几个函数 bt     显示所有的函数调...
  • yangzhongxuan
  • yangzhongxuan
  • 2011-10-27 18:38:00
  • 9319

systemtap函数调用栈信息不齐的原因和解决方法 :print_backtrace

http://blog.yufeng.info/archives/1229  本文链接地址: systemtap函数调用栈信息不齐的原因和解决方法 有时候在看系统代码的...
  • scdxmoe
  • scdxmoe
  • 2014-10-08 14:47:57
  • 981

利用backtrace函数打印函数调用栈

我们一般打印函数调用栈可以选择GDB的backtrace命令,简写bt命令都可以。这里有一个新的方法,那就是利用backtrace函数打印,不过还要加上backtrace_symbols()函数。 i...
  • FreeeLinux
  • FreeeLinux
  • 2016-10-24 13:05:17
  • 967

linux用户程序调用栈打印backtrace

在调试程序的时候,有时候程序跑到一个分支不知道怎么调用到的/在走到不应该走的分支后希望把整个调用栈打印出现,在linux用户程序里面有一个glibc库函数backtrace可以打印出当前进程栈信息: ...
  • jasonsungblog
  • jasonsungblog
  • 2015-10-14 22:36:57
  • 1776

函数调用栈的获取原理分析

上一篇文章《在Linux程序中输出函数调用栈》,讲述了在Linux中如何利用backtrace获取调用栈,本篇文章主要介绍一下获取函数调用栈的原理,并给出相应的实现方式。 要了解调用栈,首先需要...
  • study_live
  • study_live
  • 2015-01-29 17:56:53
  • 1644

在linux kernel中打印函数调用的堆栈的方法

在linux内核调试中,经常用到的打印函数调用堆栈的方法非常简单,只需在需要查看堆栈的函数中加入: dump_stack();或 __backtrace();即可。   dump_s...
  • xishuang_gongzi
  • xishuang_gongzi
  • 2016-05-05 21:02:42
  • 4081

使用backtrace获得动态链接库的调用地址

调用backtrace的时候,动态链接库(.so)的调用地址不能直接调用addr2line得到代码行数,stackoverflow上的方法比较麻烦 可以通过读取/proc/pid/maps获得动态能链...
  • littlefang
  • littlefang
  • 2013-12-29 15:44:21
  • 3019

通过编程方式获取backtrace(函数调用栈)(接上篇core dump调试解释)

在用GDB调试器时可以查看所谓的Backtrace,它包含一系列的函数调用信息,用命令backtrace或bt可以在GDB中查看函数调用栈的信 息。有些场合没法使用GDB时,则可以用glibc库函数中...
  • yanyiyyy
  • yanyiyyy
  • 2011-07-22 22:47:42
  • 1735

iOS中线程Call Stack的捕获和解析(一)

这里对上个月做的一个技术项目做部分技术小结,这篇文章描述的功能和我们在使用Xcode进行调试时点击暂停的效果类似。一、获取任意一个线程的Call Stack如果要获取当前线程的调用栈,可以直接使用现有...
  • jasonblog
  • jasonblog
  • 2015-11-18 16:35:39
  • 8313
收藏助手
不良信息举报
您举报文章:backtrace 调试 代码执行的路径(调用栈)
举报原因:
原因补充:

(最多只允许输入30个字)