gdb 多线程编程
作者:互联网
多线程调试
在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