最近在看C++ Concurrency in Action,有些代码需要调试查看运行过程,结合以前单线程的调试和网上的一些资料进行多线程调试。在此简单记录一下步骤,方便日后使用。
gcc -g -ggdb -std=c++11 -pthread test.cpp -o test
r(run)启动
start启动-停留在main函数,分步调试
n(next)下一条指令
s(step)下一条指令,可进入函数,原函数无法进入
q(quit)退出gdb
set args 10,6 设置输入参数
set argc=2 动态设置变量值
list显示代码(list fun.c:1查看指定的文件代码)
b(break) 17 在17行打断点
b sum 在sum函数打断点
b func.c:11 为func.c的11行打断点
Info b查看断点信息
del 编号 删除第6编号的断点
p(print) 变量 查看变量的值
ptype 变量 查看变量类型
c(continue)跳到下一断点
display 变量 跟踪变量的值,查看变量什么时候变化
undisplay 编号 不跟踪
b 行号 if i==1设置条件断点
gdb test
r

Ctrl+c 暂定运行
info thread

bt

thread 2

set scheduler-locking on

set scheduler-locking off