ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

gdb 多线程编程

2022-09-15 19:03:22  阅读:251  来源: 互联网

标签:thread 编程 函数调用 gdb 线程 threads 多线程 调试


多线程调试

在VC上面对多程序的调试比较简单。如果想要对程序进行调试的话,首先F10,开始运行程序。其次,我们需要等线程创建之后才能设置断点,不然我们看到的程序只有main函数一个thread。

a)单击【Debug】,选择【threads】,那么我们就可以开始多线程调试了;

b)如果需要对某一个thread挂起,单击对应的thread,选择【suspend】即可;

c)如果需要对某一个thread重新调度,单击对应的thread,选择【resume】即可;

d)如果需要查看特定thread的堆栈,那么选择那个thread,然后【Set Focus】,关闭threads对话框,在堆栈窗口中即可看到;

e)如果某个线程被挂住,那么此时所有的线程都挂住了,如果你step运行,所有的threads都会参与运行;

f)如果需要对某一个thread进行调试,那么需要对其他的thread进行suspend处理 。

   

   

   

   

gdb

将程序运行起来后,我们按 Ctrl + C 将程序中断下来,此时可以使用 info threads 命令查看 redis-server 有多少线程,每个线程正在执行哪里的代码

   

使用 thread 线程编号 可以切换到对应的线程去,

然后使用 bt 命令可以查看对应线程从顶到底层的函数调用,以及上层调用下层对应的源码中的位置;

也可以使用 frame 栈函数编号 (栈函数编号即下图中的 #0 ~ #4,使用 frame 命令时不需要加 #)切换到当前函数调用堆栈的任何一层函数调用中去,然后分析该函数执行逻辑,

使用 print 等命令输出各种变量和表达式值,或者进行单步调试

   

 

标签:thread,编程,函数调用,gdb,线程,threads,多线程,调试
来源: https://www.cnblogs.com/libxing/p/16697624.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有