第七章:
Visual Studio.NET
本机代码高级调试技术
(p235)高级断电语法由两部分组成,上下文和位置或函数名。{[函数],[源文件],[二进制模块]}<位置或函数名>
(p236)设置导出函数的断点:
(p238)伪寄存器以@或者$开头,如@EAX,@BL,@ERR,@TIB
(p239)为函数在特定线程中调用设置条件断点:*(long*)($TIB+0x24) == <线程ID>
(p240)为线程设置名称。
(p240)数据断点。
(244)Watch 窗口变量的格式符号。
符号
|
格式说明
|
示例
|
显示结果
|
d,i
|
有符号的十进制整数
|
(int)0xF000F065,d
|
-268373915
|
u
|
无符号的十进制整数
|
0x0065,u
|
101
|
o
|
无符号的八进制整数
|
0xF065,o
|
0170145
|
x,X
|
十六进制整数
|
61541,X
|
0x000F065
|
l,h
|
d,I,u,o,x,X的Longh或者short前缀
|
0x00406042,hx
|
0x6042
|
f
|
有符号浮点
|
3./2.,f
|
1.500000
|
e
|
有符号的科学计算符
|
3./2,e
|
1.500000e+000
|
g
|
有符号的浮点或者有符号的科学计数符(科学计数符方式比较短)
|
3./2,g
|
1.5
|
c
|
单个字符
|
0x0065,c
|
‘e’
|
s
|
ANIS字符串
|
szHiWorld,s
|
“Hello world”
|
su
|
Unicode字符串
|
szWHiWorld,su
|
“Hello world”
|
hr
|
HRESULT或者Win32错误代码
|
0x00000000,hr
|
S_OK
|
wm
|
Windows消息号
|
0x0010,wm
|
WM_CLOSE
|
(244)Watch 窗口内dump文件的格式符号。
符号
|
格式说明
|
示例
|
显示结果
|
ma
|
64个ASCII字符
|
0x0012ffac,ma
|
0x0012ffac ...F.ݘ0.......o|......@T.......|o|
|
m
|
十六进制格式的16个字节,后跟16个ASCII字符
|
0x0012ffac,m
|
0x0012ffac bb 82 ef 9f e0 ff 12 00 90 9e 46 00 dd 98 30 ef ...F.ݘ0.
|
mb
|
(同上)
|
(同上)
|
(同上)
|
mw
|
8个字(16位一个字)
|
0x0012ffac,mw
|
0x0012ffac 82bb 9fef ffe0 0012 9e90 0046 98dd ef30
|
md
|
4个双字
|
0x0012ffac,md
|
0x0012ffac 9fef82bb 0012ffe0 00469e90 ef3098dd
|
mq
|
2个四字
|
0x0012ffac,mq
|
0x0012ffac
0012ffe09fef82bb ef3098dd00469e90
|
mu
|
2字节字符(Unicode)
|
0x0012ffac,mu
|
0x0012ffac 82bb 9fef ffe0 0012 9e90 0046 98dd ef30 ???.?F??
|
,数字
|
将一个内存地址指针扩展为指定数目的值
|
pCharArray,10
|
使用+/-放大符扩展的10字符数组
|
(p238)伪寄存器以@或者$开头,如@EAX,@BL,@ERR,@TIB
(p239)为函数在特定线程中调用设置条件断点:*(long*)($TIB+0x24) == <线程ID>
(p240)为线程设置名称。
(p240)数据断点。
(244)Watch 窗口变量的格式符号。
(244)Watch 窗口内dump文件的格式符号。、
(246)利用Watch窗口记录代码执行时间:$CLK
(246)两个未归档的为寄存器:
a、$HALDELS,显示当前进程中打开的句柄数目。
b、$VFRAME,(virtual frame pointer)指向前一个条目的EBP值
(246)自动展开自己的类型、添加自定义HRESULT值、EEAddIn:AUTOEXP.dat。
(254)远程调试,参考p216安装远程调试组件。