gdb调试多线程

一:调试
我们知道在Windows下我们常用
F5调到断点处
,F9设置断点或者取消断点,F
10开始调试或单步执行
F11进入函数内部
F7编译
Ctrl+F10调到函数内部
当然有时我们也会使用调试窗口或者查看栈帧来进行调试.
Linux下调试我们通常使用gdb(代码调试工具)
注意在写Makefile文件时,要加上-g
1:开始调试gdb filename
2:l 1其中l表示list,1表示从第一行开始
这里写图片描述
3:设置断点,,如break n在源程序的第几行开始
4:断点设置在函数处,如 break 函数名
5:info break查看断点信息
6:r运行程序,在断点处停止
7:n单条执行,执行下一个语句
8:c继续执行,continue命令缩写

这里写图片描述
9: p i打印变量i的值
10:bt查看函数堆栈
11:delete breakpoints删除所有断点
12:q退出
这里写图片描述
当然还有一些其他的指令:
13:set var:修改变量的值
14:delete breakpoint s删除序号为n的断点
15:disable breakpoints:禁用断点
16:enable breakpoints:启用断点
17:info breakpoints:查看当前设置了哪些断点
18:until X行号:调至X行
二:gdb调试多线程:
1:开始调试没有什么区别,显示
这里写图片描述
2:info threads查看线程信息
这里写图片描述
3:线程之间的跳转:
thread ID
这里写图片描述
4:单步执行
这里写图片描述

5:指定线程某些信息
gdb)thread apply ID1 ID2 command
让一个或者多个线程执行GDB命令command。
(gdb)thread apply all command
让所有被调试线程执行GDB命令command。
这里写图片描述
6:设置线程是单一执行还是一起执行
set scheduler-locking [off][on][step]
0ff 不锁定任何线程,也就是所有线程都执行,这是默认值。
on 只有当前被调试程序会执行。
step 在单步的时候,除了next过一个函数的情况(熟悉情况的人可能知道,这其实是一个设置断点然后continue的行为)以外,只有当前线程会执行。

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值