Posted on 2008-07-28 15:20
小明 阅读(7495)
评论(3) 编辑 收藏 引用 所属分类:
Tools 、
Debug
1 什么是远程调试技术
顾名思义,就是要调试的程序和调试器本身并不在一台机器上。由于虚拟机技术的盛行,在虚拟机里面运行待调试的程序,而在外面运行调试器,也是一种比较流行的做法。
2 为什么使用远程调试
远程调试有如下好处:
a. 能让产品运行在一个比较干净的环境。有的时候如果产品安装在一个装好集成环境的机器上,某些bug并不能显示出来。
b. 易于部署调试环境。很多产品都非常复杂,比如很多都以service方式运行或者要load很复杂的resource,想在调试器里面直接按F5运行,越来越难。
c. 对于游戏等全屏方式运行的程序,尤其有用。以前我对调试directx程序非常头疼。
3 怎样使用远程调试
使用vs2005进行远程调试,详细的介绍参考:http://support.microsoft.com/kb/910448
简单的来说,
1)在被调试的机器上面运行Msvsmon.exe
2)在调试机器上面运行vs2005,并attach到远程机器的某个进程
4 注意事项
a. 设置好正确的权限
被调试机器和调试机器需要互相信任的权限(two-way)。如果两台机器在同一个workgroup,让两台机器拥有一个相同的账号和密码,然后以这个账号运行。如果两台机器在一个域里面,比较简单,Msvsmon可以设置权限。如果一台机器在domain里面,另外一台不在,同样是让两台机器拥有一个相同的账号和密码,然后以这个账号运行。
对于Windows XP要特别注意一下,设置匿名的访问权限才可以work ,
http://support.microsoft.com/kb/908099 b.设置好symbol
什么,你不知道什么是symbol?简单的来说,symbol file(*.pdb) is for source-level debugging. VS2005就是靠它来调试exe的。默认情况下debug版本生成的,而release版本不生成pdb.设置好 [Project proerties]-[C/C++]-[Debug Information Format]-Program Database就可以了。
为了减少symbol方面的麻烦,最简单的做法是让被调试机器上的binary版本和本地compile出来保持一致。