waterflier's Blog -- 刘智聪的Blog

热爱生活,热爱编程
posts - 30, comments - 76, trackbacks - 0, articles - 5
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理

MSVC中的"pseudo register"调试技术

Posted on 2006-07-21 15:37 waterflier 阅读(255) 评论(0)  编辑 收藏 所属分类: 程序之路

    如果我写windows程序,并且用MSVC调试程序,那么通常我都会在Debug 的Watch window中保留一个这样的监视项 "@err,hr" .可以即时的显示当前的GetLastError值已经对应的字符串解释.非常的好用. 这个东西我一直都当做是vc的一个技巧来使用(也不记得是怎么学来的,好像是看某人调试的时候偷学的). 并没有继续寻找其它类似的监视项.今天突然心血来潮,在网上找了找,又有收获^_^

整的假寄存器列表:
 
@ERR
 最后错误值; 和GetLastError() API 函数一致
 
@TIB
 当前线程信息; 在调试器无法处理”FS:0”格式的时候是必要的
 
@CLK
 未列入文档的寄存器; 只是在Watch窗口适用
 
@EAX, @EBX, @ECX, @EDX, @ESI, @EDI, @EIP, @ESP, @EBP, @EFL
 Intel CPU 寄存器
 
@CS, @DS, @ES, @SS, @FS, @GS
 Intel CPU 段寄存器
 
@ST0, @ST1, @ST2, @ST3, @ST4, @ST5, @ST6, @ST7
 Intel CPU 浮点寄存器
 
其中@TIB很有用,可以用在多线程调试的时候作为断点的条件变量.这样就可以只观察一个线程的执行情况.


标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交