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即可:
    gdb调试源码跟踪_第1张图片
    gdb调试源码跟踪_第2张图片
    d) print (打印变量、字符串、表达式等的值,可简写为p)
    e) ptype (查看结构体定义,可以找到我们需要的函数进行调用,打印出来我们想知道的信息)
    gdb调试源码跟踪_第3张图片
    f) bt (打印帧栈信息,可以查看函数调用)
    g) d (清除断点或自动显示的表达式:d 断点号)

你可能感兴趣的:(gdb调试源码跟踪)