当前位置 博文首页 > Allen Roson:VS多线程调试

    Allen Roson:VS多线程调试

    作者:[db:作者] 时间:2021-07-09 09:40

    目录

    1.VS多线程调试问题描述

    2.解决VS多线程调试的方法

    2.1 无效方法

    2.2 方法一

    2.3?方法二


    1.VS多线程调试问题描述

    先看一下这个例子:

    ?

    这里我的代码里有2个线程,一个线程在发送数据,另外一个线程在接收数据,上图中加断点的地方是发送线程的代码,接收线程中我有一个while循环在不断地打印日志。调试起来后当断点命中上图标记的位置时,可以发现接收线程停止打印日志了,这说明在VS中,当一个线程命中断点后,其它线程也不会再继续执行代码了。

    ?

    2.解决VS多线程调试的方法

    2.1 无效方法

    ?

    有同学说把上面红色放开标记的选项去掉勾选就可以,我也试了一把,并没有效果

    ?

    2.2 方法一

    第1步:打开线程窗口

    ?

    第2步:如果你不想让某个线程运行,就在右下角选择那个线程并右键单击,在弹出的菜单中选择“冻结”。如果之后想让刚才被冻结的线程恢复运行,则再次右键单击该线程,然后点击“解冻”菜单。如果你想暂停当前线程,转去执行其它线程,则冻结当前线程,然后右键单击你想运行的线程,在弹出菜单中选择“切换”线程,则VS会自动跳转到代码中的某一行,这时你就可以调试你想运行的那个线程了。

    ?

    2.3?方法二

    虽然方法二一定程度上可以解决部分问题,但还是难以模拟真实的应用场景,且操作复杂,所以我觉得最好的方法就是打印日志,可以直接打印到VS输出窗口,也可以打印日志到文件

    cs