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