当前位置 博文首页 > Allen Roson:VS多线程调试
目录
1.VS多线程调试问题描述
2.解决VS多线程调试的方法
2.1 无效方法
2.2 方法一
2.3?方法二
先看一下这个例子:
?
这里我的代码里有2个线程,一个线程在发送数据,另外一个线程在接收数据,上图中加断点的地方是发送线程的代码,接收线程中我有一个while循环在不断地打印日志。调试起来后当断点命中上图标记的位置时,可以发现接收线程停止打印日志了,这说明在VS中,当一个线程命中断点后,其它线程也不会再继续执行代码了。
?
?
有同学说把上面红色放开标记的选项去掉勾选就可以,我也试了一把,并没有效果。
?
第1步:打开线程窗口
?
第2步:如果你不想让某个线程运行,就在右下角选择那个线程并右键单击,在弹出的菜单中选择“冻结”。如果之后想让刚才被冻结的线程恢复运行,则再次右键单击该线程,然后点击“解冻”菜单。如果你想暂停当前线程,转去执行其它线程,则冻结当前线程,然后右键单击你想运行的线程,在弹出菜单中选择“切换”线程,则VS会自动跳转到代码中的某一行,这时你就可以调试你想运行的那个线程了。
?
虽然方法二一定程度上可以解决部分问题,但还是难以模拟真实的应用场景,且操作复杂,所以我觉得最好的方法就是打印日志,可以直接打印到VS输出窗口,也可以打印日志到文件。
cs