GDB调试
基本的调试命令这里就不重复总结输出了,可以参考:传送门
下面输出一些比较有意思的用法。
多参数输入
#include <stdio.h>
int main(int argc, char *argv[])
{
printf("argv[1]:%s, argv[2]:%s\n", argv[1], argv[2]);
return 0;
}
显示栈帧
栈帧其实就是代码函数的调用顺序,当我们遇到异常或者进入断点时,可以通过 bt 命令查看代码的调用关系,非常有利于我们定位问题,例如:死锁、死循环、coredump等;
#include <stdio.h>
void func(void)
{
printf("func in.\n");
}
int main(void)
{
printf("hello.\n");
func();
return 0;
}
多进程、多线程调试
传送门
例举几个常用命令:
info inferiors:显示当前所有该调试进程所创建的进程信息
inferior :切换调试上下文到相应进程
info threads:显示该进程下的所有线程信息
thread ID:切换调试上下文到相应线程
attach 进程
有些时候多进程、多线程调试过于复杂,在知道具体的进程号(pid)时,可以使用 gdb attach 命令直接调试已经运行的进程。