您的位置:首页 > 运维架构

gdb 线程锁与non-stop模式

2012-03-06 12:33 253 查看
1.前提

gdb -v 查看版本信息

7.0以前不支持non-stop模式

2.线程锁

set scheduler-locking on/off 打开关闭

7.0以前的gdb默认当程序继续运行的时候如果有断点,那么就把所有的线程都

停下来,直到你指定某个线程继续执行(thread thread_no apply continue).

但是如果直接在当前线程执行continue的话,默认是会启动所有线程。

所以如果有多个线程都是断在同一个断点(函数)上,就是说这个函数是多线程的,

那么调试的时候就会出现异常情况。所以需要打开线程锁。

只让当前的线程执行,这意味着其他所有线程都不能执行了!

3. non-stop模式

set target-async 1

set pagination off

set non-stop on

同2不一样,gdb启动了不停模式,其实就是说,除了断点有关的线程会被停下来,

其他线程会执行执行。在网络程序调试的时候比较有用!

4.所以可以根据gdb的版本及你的实际代码情况选择到底是线程锁还是non-stop模式

5. 屏蔽SIGPIPE

gdb中的套接字等关闭了,往里面写就会报错!

handle SIGPIPE nostop noprint ignore
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: