gdb调试源码跟踪

调试步骤以及常用命令:

  1. gdb clang (读取clang调试信息)
  2. 打断点,可以打在函数上以及源码文件特定行数上:
    a) 域名+函数:
    b llvm:: LoopVectorizationPlanner::executePlan
    在这里插入图片描述
    b) 源码特定行数:
    b LoopVectorize.cpp:6295
    在这里插入图片描述
  3. set follow-fork-mode child (设置子线程)
  4. r –O3 a.c –mllvm –debug (添加编译选项,加上debug的话方便看过程中的debug信息)
  5. 常用命令:
    a) c (到达下一断点)
    b) n (逐句执行)
    c) s/fini (进入函数/从此函数跳出)
    例如到了第二个断点处我们想进入execute函数,则需要执行s:
    在这里插入图片描述
    但是这一行有多个函数,进的不是我们想进的函数时fini退出再次执行s即可:
    在这里插入图片描述
    在这里插入图片描述
    d) print (打印变量、字符串、表达式等的值,可简写为p)
    e) ptype (查看结构体定义,可以找到我们需要的函数进行调用,打印出来我们想知道的信息)
    在这里插入图片描述
    f) bt (打印帧栈信息,可以查看函数调用)
    g) d (清除断点或自动显示的表达式:d 断点号)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值