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开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!

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

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注Java获取)

img

总结

在这里,由于面试中MySQL问的比较多,因此也就在此以MySQL为例为大家总结分享。但是你要学习的往往不止这一点,还有一些主流框架的使用,Spring源码的学习,Mybatis源码的学习等等都是需要掌握的,我也把这些知识点都整理起来了

面试真题

Spring源码笔记

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!
…(img-7Xki6bWn-1713436847766)]

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 24
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值