多线程的调试命令

1、info threads: 
这条命令显示的是当前可调试的所有线程,GDB会给每一个线程都分配一个ID。前面有*的线程是当前正在调试的线程。 
2、thread ID: 
切换到当前调试的线程为指定为ID的线程。 
3、thread apply all command: 
让所有被调试的线程都执行command命令 
4、thread apply ID1 ID2 … command: 
这条命令是让线程编号是ID1,ID2…等等的线程都执行command命令 
5、set scheduler-locking off|on|step: 
在使用step或continue命令调试当前被调试线程的时候,其他线程也是同时执行的,如果我们只想要被调试的线程执行,而其他线程停止等待,那就要锁定要调试的线程,只让它运行。 
off:不锁定任何线程,所有线程都执行。 
on:只有当前被调试的线程会执行。 
step:阻止其他线程在当前线程单步调试的时候抢占当前线程。只有当next、continue、util以及finish的时候,其他线程才会获得重新运行的。 
6、show scheduler-locking: 
这条命令是为了查看当前锁定线程的模式。

7.i threads

实现线程间切换

8.编译的时候需要注意的是,别忘了加动态链接库和-g。 

gcc -g *.c -o xxx -lxxx

我的:gcc -g rwlock.c main.c -o a -lpthread

9.-g -rdynamic

在生成调试信息的时候加入 -g -rdynamic选项,然后gdb启动调试程序时,直接run,就能找出错误信息所在的地方

一个小提示:

在输入gdb xx时,进入gdb命令,这时会输出一些信息。如上所示,这些信息大多都是关于gdb的一些信息,可以不让他输出,

如:gdb -q xx

这里面a是我生成的调试信息的文件名。

Linux下gdb线程的调试的更多相关文章

  1. LINUX下GDB反汇编和调试

    Linux下的汇编与Windows汇编最大的不同就是第一个操作数是原操作数,第二个是目的操作数.而Windows下却是相反. 1. 基本操作指令 简单的操作数类型说明.一般有三种. (1)马上数操作数 ...

  2. [转] linux下的c/c++调试器gdb

    PS:1. 断点C++类函数,用b 命名空间::类名::方法名 2. 编译参数一定要加-g,才可断点调试 http://www.cnblogs.com/xd502djj/archive/2012/08 ...

  3. linux下的c/c++调试器gdb

    Reference:  http://www.cnblogs.com/xd502djj/archive/2012/08/30/2663960.html linux下的c/c++调试器gdb gdbLi ...

  4. Linux知识(5)----LINUX下GDB调试

    命令 解释 示例   file 加载被调试的可执行程序文件.因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径. (gdb) file gdb-sample     r c Run的简 ...

  5. 一文入门Linux下gdb调试(二)

    作者:良知犹存 转载授权以及围观:欢迎添加微信号:Conscience_Remains 总述     今天我们介绍一下core dump文件,Core dump叫做核心转储,它是进程运行时在突然崩溃的 ...

  6. linux中gdb的可视化调试

    今天get到一个在linux下gdb调试程序的技巧和大家分享一下!平时我们利用gcc进行编程,进行程序调试时,观察程序的跳转等不是这么直观.都是入下的界面! 但是如果我们在编译连接时上加了-g命令生成 ...

  7. linux下gdb如何处理coredump错误

    linux下gdb如何处理coredump错误 在编写C++程序中,我们经常会遇到一种错误,segment fault, 这种coredump错误 会导致程序运行时异常退出或者终止,这种错误没有明显错 ...

  8. Linux下查看线程数的几种方法汇总

    Linux下查看线程数的几种方法汇总 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Linux下查看某个进程的线程数量 pstree命令以树状图显示进程间的关系(display ...

  9. Linux下C/C++程序调试基础(GCC,G++,GDB,CGDB,DDD)

    在写程序的时候,经常会遇到一些问题,比如某些变量计算结果不是我们预期的那样,这时我们需要对程序进行调试.本文主要介绍调试C/C++在Linux操作系统下主要的调试工具. 在Linux下写程序,C/C+ ...

随机推荐

  1. 浅谈java中源码常见的几个关键字(native,strictfp,transient,volatile)

    最近看源码总发现一些没见过的关键字,今天就来整理一下native,strictfp,transient,volatile native 本地 native是与C++联合开发的时候用的!java自己开发 ...

  2. dva-loading使用方法

    1. 下载dva-loading npm install dva-loading --save 2. 导入并使用dva-loading import createLoading from 'dva-l ...

  3. hack games

    记下,有时间玩玩~ wargame http://www.wechall.net/lang_ranking/en --------------- Monyer系列(黑客游戏) 1. http://mo ...

  4. Shell awk文本处理,shell脚本编写

    Shell awk文本处理,shell脚本编写 一:内容包含awk.变量.运算符.if多分支 <a>语法糖: awk [options] 'commands' files option - ...

  5. EPANET中的typedef使用

    struct  Floatlist  /* Element of list of floats */{   double  value;   struct  Floatlist *next;};typ ...

  6. hdu1507

    题解: 二分图最大匹配 建边和第一题差不多 每两个相邻的建边 然后输出方案 代码: #include<cstring> #include<cmath> #include< ...

  7. 重温HTML

    1 <h1> </h1>标题标签 <p> </p>段落标签 <img src=“ ”>图片标签 2. <em>和<stro ...

  8. Linux环境安装xmapp(PHP-Mysql集成环境)

    xmapp是很多初学者使用的PHP环境集成包,用yum在linux安装的php和mysql版本现在都很低,xmapp可以解决这个问题,下面我们直接进入正题,安装一个php集成环境. 我使用的是vm虚拟 ...

  9. mysql服务1067错误:修改mysql可执行文件路径

    今天遇到mysql服务1067错误的问题,设置使用系统账户也无法启动mysql,后面认证看了系统的配置信息,发现启动文件也就是mysql安装路径是之前的(也说明之前安装mysql,没去卸载直接安装新的 ...

  10. C++中几个值得分析的小问题(1)

    下面3个小问题都是我认为C++ Beginner应该能够解答或辨别清楚的.希望我们能通过题目挖掘更多的信息,而不仅仅局限在解题.我最喜欢说的话:能力有限,所以作为抛砖引玉,希望共同讨论,指出错误. 另 ...