疑问 : 断点失效? 条件: vs2008在Win7X64真机和Win7X64虚拟机(vmware9.0)之间进行远程调试

来源:互联网 发布:mh370 知乎 编辑:程序博客网 时间:2024/05/22 04:58

昨天遇到一个很奇怪的问题: vs2008在Win7X64真机和Win7X64虚拟机之间进行匿名远程调试时, 能Attach上远端的进程,  但是远端程序中的断点全部失效.


调试环境:

  真机: Win7X64Sp1(Win7旗舰版SP1, 内部版本7601) + vs2008

  虚拟机: Win7X64Sp1 + 一个CPU + 4G内存.

  虚拟机版本: 9.0.0 build-812388

  vs2008版本: 9.0.30729.1 SP

即使是从一个干净的Win7X64还原点开始, 运行一个在本地编译可以Attatch有断点的一个HelloWord程序, 换到虚拟机中也下不了断点.

在网上找到了资料(http://blog.csdn.net/lostspeed/article/details/8450697), 但那是真机之间进行远程调试.

我手头的真机暂时只有一台, 另外2台懒得去修. 暂时只能在真机和虚拟机之间进行远程调试.


根据资料中的说法, 如果Attach已经运行的目标程序时, 看不到"User Name"中的用户名, 说明Attach不上. 就会出现断点失效的问题.


在本地Attach, 从来没出现过这种断点失效的问题. 有断掉失效的问题, 也是别的情况.


现在想到的方法列表:

1. 在虚拟机中的Win7中安装vs2008, 直接在虚拟机本地Attach下断点.

    这最可行, 最简单.

2. 将虚拟机换成WinXp, 进行真机虚拟机之间的远程调试.

   这种情况, 以前没遇到过断点失效的问题.

   需要实验, 需要时间. 作为备选方案1.

3. 下载低版本的Vmaware(vm9以下的版本, vm7.xx, vm6.xx). 

   这种情况, 以前没遇到过断点失效的问题.

   需要实验, 需要时间. 作为备选方案2.

4. 将手头的坏计算机拿去修好, 按照资料中说的, 进行2台真机之间的远程调试.

    这个我不喜欢, 只是一个实验, 弄这么大动静. 作为最差的一个备选方案.


<2013_0101_1624>

手头有一个vmware8作出的winXp映像, 在本地上打开这个映像, 关掉防火墙, 打开远程协助(允许其他计算机来连接).

将在本地可以attach的Release版带调试符号的helloWorld程序, 放到虚拟机桌面上, 运行后, 弹出一个对话框.

在本地Attatch远程的HelloWorld程序, 同样看不到UserName, 但是可以Attatch上, 断点不失效.

看来就是由权限引起的问题, 因为不是真机, 还想不到方法用实名Attach虚拟机.

回想起来, 在公司一般也是用Win7真机远程Attach WinXp虚拟机中的程序, 或在本地Attach程序, 确实记不起有Win7真机和Win7虚拟机远程调试的情况.