博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gdb与信号
阅读量:5843 次
发布时间:2019-06-18

本文共 912 字,大约阅读时间需要 3 分钟。

 

gdb可以监测在你的程序中的任何信号。 

主要靠的命令是:

handle signal [keywords...] 

 

这里的keywords可以有以下内容:

1 nostop gdb接收到信号不会停止程序,而只是打印出一段message 

2 stop 和上面类似只不过会停止程序。 
3 print 当信号发生必须打印一条消息通知。 
4 noprint 信号发生,gdb将不会打印任何东西。 
5 pass和noignore 这两个是同义的。表示信号对你的程序是可见的。 
6 nopass和ignore 这两个也是同义的。和上面相反。。 

 

线程模式,

set scheduler-locking on|off|step

默认为off,也就是所有的线程都一起走。

 

set schedule-multiple mode 

这个是针对进程的线程,如果为on,那么所有进程的线程都能够执行。

 

none-stop模式。 

顾名思义,当程序在gdb中停止,只有当前的线程会被停止,而其他的线程将会继续运行。 

这个时候step,next这些命令就只对当前的线程起作用。 
我们要打开这个模式需要这样操作: 

# Enable the async interface.  set target-async 1  # If using the CLI, pagination breaks non-stop.  set pagination off  # Finally, turn it on!  set non-stop on

 

在all-stop模式中interrupt将会停止所有的线程。而在none-stop中只会停止当前线程。interrupt -a此时就能停止所有线程。’ 

当你有多个线程,你此时只想给某个线程设置断点,这个时候可以用这个命令: 
break linespec thread threadno 
break linespec thread threadno if ... 

 

linespec为源码行号,threadno为线程id。 

 

转载于:https://www.cnblogs.com/charlesblc/p/6433929.html

你可能感兴趣的文章
go语言中的方法method
查看>>
Redis 集合处理
查看>>
(八)路径(面包屑导航)分页标签和徽章组件
查看>>
调试 SharePoint 解决方案
查看>>
洛谷 P1417 烹调方案 (01背包拓展)
查看>>
洛谷 P1414 又是毕业季II (多个数的最大公因数)
查看>>
谷歌Gboard输入法新增“无痕模式”:仅在Chrome隐身窗口中适用
查看>>
Method not found: '!!0[] System.Array.Empty()'.
查看>>
程序员如何面试才能拿到offer
查看>>
zookeeper 入门讲解实例 转
查看>>
LoadRunner中进程运行和线程运行区别
查看>>
hihoCoder 1257 Snake Carpet(很简单的构造方法)
查看>>
DirectSound 混音的实现
查看>>
数据结构实验之栈四:括号匹配
查看>>
EXCEL如何进行多条件的数据查找返回
查看>>
gtk+学习笔记(五)
查看>>
PHP 手册
查看>>
cocos2d-x学习 之一
查看>>
JavaScript面向对象-静态方法-私有方法-公有方法-特权方法,学习
查看>>
iOS 时间戳的转换
查看>>