VS watch(监视)的技巧

hr :Windows类标记.

wm :Windows消息码.

常用内存转储对象的格式化符(用法同变量格式化符):

ma :64个ASCII码字符.

m  :以16进制书写的16字节,后跟16个ASCII字符.

mb :以16进制书写的16字节,后跟16个ASCII字符.

mw :8个字长.

md :4个双精度字.

mq :4个四倍字长的字.

mu :2字节字符(Unicode标准).

#  :将指针扩展到指定的数值数目的内存存储单元上.(#代表一个数字)

WATCH窗口允许重新设置数据变量的格式,

如:可用BY,DW表达式来定位指针的偏移量;

可用&和*运算符,且两运算符都可直接操作内存地址;

甚至可用上下说明符明确指定变量的上下文.

总之,所有格式化方法和指定方法在WATCH窗口都有效

WATCH窗口是一个完整的表达式求值程序,可以在其中查看任何条件语句.

表达式中可用的伪寄存器(可当普通变量进行查看):

@ERR:最后一个错误值,GetLastError API返回相同的值.

@TIB:当前线程的线程信息块.(调试器不能处理”FS:0″格式).

@CLK:时钟寄存器.

@EAX,@EBX,@ECX,@EDX,@ESI,@EDI,@DIP,@ESP,@EBP,@EFL

:Intel CPU寄存器.

@CS,@DS,@ES,@SS,@FS,@GS

:Intel CPU段寄存器.

@ST0,@ST1,@ST2,@ST3,@ST4,@ST5,@ST6,@ST7

:Intel CPU浮点寄存器.

二.适时编码

许多时候只想对两断点间的执行时间有个大致印象,可用@CLK得出两断点间所需执行时间(包括调试器占用的时间).

需要输入两个@CLK观察符,第一个是@CLK,第二个是@CLK=0.第二个的目的是重新运行时将定时器清0.

时间以微秒为单位,大多数情况下需要格式化为毫秒:”@CLK/1000,d”.

三.在WATCH窗口中调用函数

大多数情况下用于执行专门编写的校验数据结构,保证数据的相关性的函数.在释放构件中,从未调用过的函数不会被链接,因此不必担心这类函数会对影响发布构件.

如函数没有参数,也要求使用括号”()”,调用时像用普通函数一样传送参数.WATCH右边将显示函数返回值.

这里有些限制:

1.只能在一个单线程上下文中执行函数.如是多线程程序,将函数输入到WATCH窗口中检查结果后应立即从WATCH窗口清除,否则,如调试函数在第二个线程上下文中执行,会立即终止第二个线程的运行.

2.调试函数必须在20秒内执行.如执行过程中出现异常,程序会在调试器中中止.

3.(常识)只对数据验证进行内存读取,如有问题,调用OutputDebugString类的函数.如更改内存或调用API函数—-尽管这是可能的,但无法预知可能会发生什么.

只要在WATCH窗口中重新计算表达式,已输入WATCH窗口的调试函数就会执行:

.程序处于运行状态并触发某一断点时.

.单步调试某一代码行或某一指令时.

.在WATCH窗口左边编辑完成调试函数的文本并按下回车时.

.在运行程序时出现异常情况,并让你返回调试器中时.

使用调试函数的建议:输入调试函数并查看值后,立即从WATCH窗口清除;只为最关键的数据结构编写调试函数;不要更改个别结构的转储内像.

四.自动扩展自己的类型

常见的自动扩展是RECT,输入RECT型的变量后直接显示其中的某些数据成员的值.

自定义类型扩展时,只需将自己的类型入口加入\MSDev98\Bin目录的AUTOEXP.DAT文件中.

例:

扩展CreateProcess()所用到的PROCESS_INFORMATION结构

1.检查调试器将该类型识别为什么.将PROCESS_INFORMATION变量输入WATCH窗口,右击变量,选择Properties,在这里它被标注为_PROCESS_INFORMATION类型.

2.打开AUTOEXP.DAT文本文件,加入扩展入口.语法如下:

Type=[text]<member[format]>

本例中要查看hProcess和hThread值,故输入:

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Android开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!**](https://bbs.csdn.net/topics/618164986)

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VS Code中,你可以使用调试器来监视变量的值。首先,确保你的代码中已经开启了sourceMap选项,这样VS Code才能正确地映射Ts源代码和正在运行的Js代码之间的关系。然后,你可以在调试器中设置断点,当程序执行到断点处时,你可以查看变量的值。你可以通过以下步骤来监视变量的值: 1. 打开VS Code并导航到调试视图(快捷键为Ctrl+Shift+D)。 2. 点击左上角的齿轮图标,选择"启动配置"。 3. 在启动配置中,确保你选择了正确的调试器(例如Node.js)。 4. 在启动配置中,找到"配置"字段,并点击编辑按钮(铅笔图标)。 5. 在配置文件中,你可以添加或修改"watch"字段来监视变量。例如,你可以添加以下代码来监视名为"num"的变量: ```json "watch": { "num": "${num}" } ``` 6. 保存配置文件并关闭它。 7. 在你的代码中设置断点,然后点击调试视图中的"启动调试"按钮(播放图标)。 8. 当程序执行到断点处时,你可以在调试视图的"变量"面板中看到"num"变量的值。 通过这种方式,你可以监视任何你感兴趣的变量,并在调试过程中查看它们的值。希望这能帮到你!\[1\] #### 引用[.reference_title] - *1* *2* *3* [VsCode 各场景高级调试技巧!](https://blog.csdn.net/u010467643/article/details/128024692)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值