当前位置: 技术问答>linux和unix
如何调试多线程的代码? 多何调试网络代码 服务器的和客户端的
来源: 互联网 发布时间:2015-10-23
本文导语: .... 现在不会调试 全是用debug 信息 来看的 好长好长的 调试信息啊 累死人啊 如果问题出现在运行一会才出现 调试代码居然有200来页a4 ....这个太痛苦了吧 | 如果你程序是多线程的话...
.... 现在不会调试 全是用debug 信息 来看的
好长好长的 调试信息啊 累死人啊
如果问题出现在运行一会才出现 调试代码居然有200来页a4 ....这个太痛苦了吧
好长好长的 调试信息啊 累死人啊
如果问题出现在运行一会才出现 调试代码居然有200来页a4 ....这个太痛苦了吧
|
如果你程序是多线程的话,你可以定义你的断点是否在所有的线程上,或是在某个特定的线程。GDB很容易帮你完成这一工作。
break thread
break thread if ...
linespec指定了断点设置在的源程序的行号。threadno指定了线程的ID,注意,这个ID是GDB分配的,你可以通过“info threads”命令来查看正在运行程序中的线程信息。如果你不指定thread 则表示你的断点设在所有线程上面。你还可以为某线程指定断点条件。如:
(gdb) break frik.c:13 thread 28 if bartab > lim
当你的程序被GDB停住时,所有的运行线程都会被停住。这方便你你查看运行程序的总体情况。而在你恢复程序运行时,所有的线程也会被恢复运行。那怕是主进程在被单步调试时。
break thread
break thread if ...
linespec指定了断点设置在的源程序的行号。threadno指定了线程的ID,注意,这个ID是GDB分配的,你可以通过“info threads”命令来查看正在运行程序中的线程信息。如果你不指定thread 则表示你的断点设在所有线程上面。你还可以为某线程指定断点条件。如:
(gdb) break frik.c:13 thread 28 if bartab > lim
当你的程序被GDB停住时,所有的运行线程都会被停住。这方便你你查看运行程序的总体情况。而在你恢复程序运行时,所有的线程也会被恢复运行。那怕是主进程在被单步调试时。