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
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
相关文章推荐
- gdb 使用设置non-stop模式
- 多线程调试必杀技 - GDB的non-stop模式
- 多线程调试必杀技 - GDB的non-stop模式
- GDB的non-stop模式
- 多线程调试必杀技 - GDB的non-stop模式
- 多线程调试必杀技 - GDB的non-stop模式
- 多线程调试 GDB的non-stop模式
- 多线程调试必杀技 - GDB的non-stop模式
- 多线程调试必杀技 - GDB的non-stop模式
- [Z] 多线程调试必杀技 - GDB的non-stop模式
- 多线程调试必杀技 - GDB的non-stop模式
- 多线程调试必杀技 - GDB的non-stop模式
- 多线程调试必杀技 - GDB的non-stop模式
- 多线程调试必杀技 - GDB的non-stop模式
- gdb 新特性 non-stop
- java 线程stop和suspend的废弃
- boost::thread简介和gdb调试线程
- java线程安全的单例模式
- 线程安全的单例模式
- numactl 修改 非统一内存访问架构 NUMA(Non Uniform Memory Access Architecture)模式