景观做文本常用的网站,wordpress主题移动端,百度大搜数据多少钱一条,网络推广引流一、简介
预备工具和知识#xff1a;使用使用VSCode使用Debug。 本文简介#xff1a;本文将简要介绍debug中Continue#xff0c;Step Over#xff0c;Step Into和Restart的功能。并介绍如何在debug时查看动态内存地址#xff08;指针#xff09;的值#xff1b;
二、D…一、简介
预备工具和知识使用使用VSCode使用Debug。 本文简介本文将简要介绍debug中ContinueStep OverStep Into和Restart的功能。并介绍如何在debug时查看动态内存地址指针的值
二、Debug介绍
1. 设置断点
设置普通断点 使用鼠标在编辑框左侧左击即可设置一个断点当在debug模式下运行时当程序运行到此处会暂停。 如下图所示 使用debug模式运行程序运行到断点处会暂停如下图所示。 设置条件断点 我们可以设置一些条件断点指定在特定条件下断点生效。例如我们在int b 1;处设置一个断点并设定当a1时该断点生效。 首先我们在第7行处设置一个普通断点然后右击断点选择Edit Breakpoint再在编辑框里输入a1如下图所示 此时只有当变量a等于1时第7行的断点才生效此时代码中a等于0不满足条件因此此断点不生效。我们依旧选择debug模型运行程序结果如下 我们会发现此时程序会直接运行结束不会在断点处暂停。假如我们将代码中的第6行改为int a1;令变量a等于1再运行一次会发现程序在断点处暂停了。这说明我们设置的条件断点只有当a等于1时才生效。
2. Debug各按钮介绍
Continue在当前断点处暂停时点击 Continue 会继续运行程序并在下一个断点处暂停如果有下一个断点并能运行到该断点处的话。Step Over单步执行若当前行代码为函数则会直接运行完当前行的函数不进入该函数内部。若当前行代码为其他语句则直接运行完当前行语句。并在下一行处暂停。Step Into单步执行若当前行代码为函数则会进入该函数内部继续单步执行。若当前行代码为其他语句则直接运行完当前行语句。并在下一行处暂停。Step Out若此时是经过Step Into到某子函数内部时点击Step Out会直接运行完当前子函数并跳转到上层函数处继续单步执行。若在此之前没有经过Step Into则该功能无效。Restart重新运行程序。
三、查看动态分配的内存变量
在debug时对于简单变量、数组变量可以在左侧的VARIABLES窗口里看到变量的值但是对于指针类型的变量我们只能看到指针的值地址不能看到指针所指向的内存位置里的值。如下图所示 从上图中可以看出对于简单变量a和数组变量b可以直接查看内存中的数值而对于指针p只能看到其中的的地址无法看到指针指向的地址里的数值。 我们可以使用以下两种方法查看指针p指向位置处的内存值
1. 使用*pointersize查看指针处的值
在VARIABLES窗口处右击p点击Add to watch点击完完成后会在WATCH窗口里显示此时正在监视变量p如下图所示 然后在WATCH窗口右击p选择Edit Expression将p修改为*pointersize的格式由于申请p时申请了5个int型变量的内存因此size5。那么我们将WATCH窗口中的p改为*p5如下图所示即可查看p指向的内存处的值
2. 使用*(type(*)[size])pointer将指针转为数组变量
我们也可以将指针p强制转为数组类型然后查看p处内存的值。与前面类似只不过此时需要将WATCH窗口里的p改为*(type(*)[size])pointer格式对于int* pint[5]我们需要改为*(int(*)[5])p如下图所示可以看到使用该方法也可查看p指向的内存处的值
四、参考引用
[1]. debug 调试——step over、step into、step out 的区别 [2]. VScode调试c代码时如何显示动态分配的指针数组