VS使用总结07——断点调试

时间:2024-04-12 12:32:07

在前面,我们也讨论过程序调试,比如说这里。今天,我们还可以就软件调试多讲一些内容。比如说条件断点,数据断点,多线程断点等等。

1)数据断点

所谓数据断点,就是全局变量或者函数中的数计算的过程中,如果数据值本身发生了改变,就会触发断点。这里的数据有两种,一个是全局数据,一个函数内部的数据。

以全局数据value为例:

a)按F10,运行程序,获取value的地址;

bAlt+F9,选择【DATA->Advanced】;

c)在【Expression】中输入DW(0x0043178),【ok】回车;

dF5继续运行程序,则程序会在value发生改变的时候停住。

以局部数据total为例,

a)按F10,运行程序,获取value的地址;

bAlt+F9,选择【DATA->Advanced】;

c)在【Expression】中输入total,在【Function】输入test,【ok】回车;

dF5继续运行程序,则程序同样会在total发生改变的时候停住。

2)条件断点

条件断点和数据断点差不多。只不过,数据断点在数据发生改变的时候就会断住,而条件断点只有在满足一定的条件下才会有断住。比如说,我们可以让test子程序在index==5的时候断住。

 

a)按F10,运行程序,获取value的地址;

bAlt+F9,选择【DATA->Advanced】;

c)在【Expression】中输入index==5,在【Function】输入test,【ok】回车;

dF5继续运行程序,则程序同样会在index==5的时候停住。

3)多线程调试

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

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

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

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

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

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

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

数据断点

  1. connection_root[0].frame_head内存被改变

VS2015使用总结07——断点调试

2.设置数据断点VS2015使用总结07——断点调试

3.断点命中条件设置VS2015使用总结07——断点调试

4.断点命中效果VS2015使用总结07——断点调试

条件断点

 

  1. 把光标放在sum = sum + i + j;一行代码上,按F9,在这一行设置一个断点,然后右键选中单击出现的红色断点标志,选择条件菜单项,如下图:

VS2015使用总结07——断点调试

  1. 4

在出现的窗口输入触发该断点的条件,如下图:

VS2015使用总结07——断点调试

 

 

多线程调试

 

1.打开多线程窗口,找到当前线程

VS2015使用总结07——断点调试

此时,出现窗口如下:

VS2015使用总结07——断点调试

2.右击任意位置,选中全部线程

VS2015使用总结07——断点调试

3.停止全部线程

VS2015使用总结07——断点调试

此时,线程状态如下:

VS2015使用总结07——断点调试

4.单独启动当前线程:先单击当前线程,在点击启动按钮,如下红色箭头所示

VS2015使用总结07——断点调试