从 0 到 1 学习 Visual Studio Debug 之二:窗口


prtyaa
prtyaa 2023-12-25 16:08:27 51922
分类专栏: 资讯

 

本次将介绍 Visual Studio Debug Windows,也就是 VS 常用的 Debug 窗口。

因为每个窗口的功能都十分繁多,所以这里只做基本介绍,不做详解,有需要的朋友可参考 MSDN 或者在使用的过程中自行研究。

注意,只有程序在调试时挂起的时候,下面的大部分窗口才可以出现并使用。还有就是有的截图实在找不到英文版的,就只能用我自己本地中文版的了。

 

 

1 Autos

 

Autos 窗口显示的是当前行以及前面一行(C#,VB)或者三行(C++)的变量和当前值。

 

 

 

2 Locals

 

Locals 窗口显示的是当前范围内定义的变量,通常是当前正在执行的函数或方法。

 

 

 

3 Watch

 

Watch 窗口显示的是自己想要查看的变量或者表达式。

在变量处右击选择「Add Watch」,即可把变量添加至 Watch 窗口,进而在程序执行的时候,查看该变量值的变化情况。

VS 可以同时显示四个 Watch 窗口,功能是一样的。

与 Autos 和 Locals 窗口不同的是,Watch 窗口中的变量会一直存在并显示,只不过超出范围后会变灰。

 

除了查看变量,Watch 窗口还可以计算表达式。

 

 

 

4 QuickWatch

 

与 Watch 窗口可以同时显示多个变量不同的是,QuickWatch 窗口一次只能显示一个变量或者表达式。

 

 

 

5 Memory

 

Memory 窗口显示的是应用程序的内存空间,可以查看指定地址中的内容。

在地址栏中输入地址的时候,除了用具体的 32 bit 地址,也可以用指针 (前提是该指针在当前范围内)。

右上方的列表示一行显示多少个 Byte 的数据,可以选择 8,16,32,64 等。

 

Autos,Locals,Watch 和 QuickWatch窗口中的大多数变量的值都可以在程序运行的时候手动进行更改。Memory 窗口中的值同样也可以在程序运行的时候手动更改。

变量或者内存的值在运行时发生变化的时候,会变成红色。

另外,可以右键选择十六进制显示,方便查看。

 

 

 

6 Breakpoints

 

Breakpoints 窗口用来管理用户设置的所有断点,也就是说,你所设置的所有断点都会出现在这里。

可以勾选前面的单选框来 Enable / Disable 一个或多个断点。也可以使用上方的删除按钮来删除所有的断点。

 

 

 

7 Call Stack

 

Call Stack 窗口显示的是函数或者方法的调用顺序。

如上图,第一行黄色箭头指向的是当前正在执行的函数 (本例中为 Update)。第二行代表的是第一行的被调函数(本例中,Path.set 调用 Update),以此类推。

对于查看函数或者方法的执行流程,Call Stack 窗口非常有用。

 

在 Call Stack 窗口右键,会有很多实用的功能。

具体功能就不详细展开来说了,看名字就能猜出来。

 

如果是 Visual Studio Enterprise 的话,Call Stack 窗口还可以显示 Code Map,也就是函数调用关系图。

 

 

 

 

8 Modules

 

Modules 窗口显示的是当前程序正在使用的 EXE 和 DLL,及其相关的一些信息。

在 Symbol Status (符号状态) 一列可以看出 Debug 符号表的加载情况。右键可以手动加载 PDB 文件。

 

 

 

9 Threads

 

Thread 窗口显示的是当前程序涉及到的所有的线程。

黄色箭头指向当前线程。

窗口上方有一系列的快捷键可以使用,例如可以显示每个线程的 Call Stack, 可以对线程进行分组,还可以 Suspend 和 Resume 线程。

 

关于 Thread 窗口,更多的使用方法将在后续的如何调试多线程的教程中讲到。

 

 

 

10 Disassembly

 

Disassembly 窗口显示的是编译器创建的指令对应的汇编代码。

如果是托管代码,对应的是 Just-in-Time (JIT) 编译器创建的本地代码,而不是由 VS 编译器生成的 Microsoft intermediate language (MSIL)。

右键可以显示每个指令所在的存储器地址,代码字节,内存地址的符号名称等。

 

只有在 Debug -> Option 菜单中启用地址级调试的时候,Disassembly 窗口才可以使用。

 

 

 

 

11 Register

 

Register 窗口显示的是寄存器的值。它们的值可以在程序运行的时候手动进行更改。

 

同理,Register 窗口也只有在 Debug -> Option 菜单中启用地址级调试的时候,才可以使用。

 

 

 

 

12 Immediate

 

Immediate 窗口用于在调试的时候计算变量值,表达式的值,函数的值等。另外,还可以用来执行单条 VS cmd。

 

在 Immediate 窗口执行 cmd 的时候,前面必须用「>」符号。

 

因为 Debug.Print 的别名是 「?」,所以也可以这样使用。

 

查看别名。

 

 

具体用法如下。

 

网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。

本文链接:https://www.xckfsq.com/news/show.html?id=30594
赞同 0
评论 0 条
prtyaaL2
粉丝 1 发表 2553 + 关注 私信
上周热门
如何使用 StarRocks 管理和优化数据湖中的数据?  2950
【软件正版化】软件正版化工作要点  2872
统信UOS试玩黑神话:悟空  2833
信刻光盘安全隔离与信息交换系统  2728
镜舟科技与中启乘数科技达成战略合作,共筑数据服务新生态  1261
grub引导程序无法找到指定设备和分区  1225
华为全联接大会2024丨软通动力分论坛精彩议程抢先看!  165
2024海洋能源产业融合发展论坛暨博览会同期活动-海洋能源与数字化智能化论坛成功举办  163
点击报名 | 京东2025校招进校行程预告  163
华为纯血鸿蒙正式版9月底见!但Mate 70的内情还得接着挖...  158
本周热议
我的信创开放社区兼职赚钱历程 40
今天你签到了吗? 27
如何玩转信创开放社区—从小白进阶到专家 15
信创开放社区邀请他人注册的具体步骤如下 15
方德桌面操作系统 14
用抖音玩法闯信创开放社区——用平台宣传企业产品服务 13
我有15积分有什么用? 13
如何让你先人一步获得悬赏问题信息?(创作者必看) 12
2024中国信创产业发展大会暨中国信息科技创新与应用博览会 9
中央国家机关政府采购中心:应当将CPU、操作系统符合安全可靠测评要求纳入采购需求 8

加入交流群

请使用微信扫一扫!