VS2010远程调试你的程序vc++/wpf/C#/MFC

VS2010远程调试你的程序vc++/wpf/C#/MFC

1 背景说明

在进行设备控制软件开发的时候,需要进行设备的上机调试。我们在安装了工作环境(VS2010+Access+流程图等软件)的电脑上编码写好待调试的软件之后,待机器零配件和电气安装好之后,再在设备上进行调试,这个时候,设备会自带自己的工控电脑,这个工控电脑没有安装代码调试的软件。一般的解决办法是,将开发所需要的所有软件在目标工控机上再安装一遍,然后将代码拷贝到目标机,然后在目标机上修改代码和调试代码。这样做有一下几个缺点。

(1)、工作环境搭建很耗时。

目标机需要安装的软件多,VS2010+Access+Visio+Office+SVN等一系列软件,最少需要2个小时的安装时间,时间过久。另外,对于每一个要上机调试代码的目标机,都要搭建一遍工作环境,那是多么蛋疼!

(2)、修改代码效率低

在目标机上安装好开发环境之后,修改代码麻烦。因为在机器上,键盘、鼠标和显示器的安装位置并不适合开发,会导致效率低下。通常为了调试方便,要多余的调试桌子和多余的键盘和鼠标等,可是,现场往往会出现没有这些多余的硬件的场合。

(3)、客户现场解决问题响应慢

特别是新机器的软件,一方面,需要在客户的工厂里面,根据客户的要求,现场修改程序;另一方面,由于是全新的软件,肯定会有逻辑问题要现场调试修改。但是机器发到客户后,往往是没有开发环境的。这个时候,安装工作环境,在客户的目标机上修改代码进行调试,并且在客户生产现场,几乎没有客户会提供你桌子,让你开发和调试的时候更加舒适和高效,通常只能站着,改几句代码。这一切,都会导致在客户现场的解决问题的效率低下。

(4)、代码泄露风险高

通过拷贝的方式将代码拷贝到目标机上,中途往往会有上厕所啊、借个电话等事情,让你暂时离开你的目标机电脑,但是这个时候,代码还在机器上。如果将代码拷贝回来,又很麻烦,如果不拷贝,又有代码被被人拷贝走的风险。要知道,一份比较完整的控制系统软件,是开发团队很长时间的智力结晶!

(5)、拷贝次数多,代码合并麻烦

    在目标机器上调试的程序,最终要拷贝回到开发电脑上,并和团队其他人的工作合并,

经常代码迁入和迁出,再进行代码合并,是让人很恼火的。

为了解决上面的问题,必需要有新的方法,必需统一开发电脑和目标调试电脑。而这个方法就是VS2010的远程调试功能,通过开发机直接调试目标机的运行程序,包括VC++程序和C#程序,并且代码只需要呆在开发机。使用VS2010的远程调试功能,我们只需要几个简单的步骤就可以。

2 搭建硬件环境

为了实现VS2010的远程调试的工作环境,需要有一个功率比较高的USB无线网卡给工控机接收信号,有以下几步

(1)、搭建目标机和开发机的局域网。

机器上的工控机都是不联网的,而且网口可能会全部被硬件占用,不一定够用。为此,开发中专门配置USB无线网卡,通过该USB无线网卡接收信号。要注意,这里必须是接收信号,因为USB无线网卡通过USB供电,他的功率不够高。

开发机,使用笔记本电脑,用笔记本电脑自带的无线网卡作为局域网发射端。注意,必须是笔记本电脑作为发射端,因为笔记本电脑是220V的电源,发射无线信号是很强大的。

笔记本电脑作为发射端,比用工控机USB无线网卡做发射端,二者的局域网信号强弱差4格。笔记本发射是满格,而USB无线网卡发射是1格!本人亲测!

(2)、猎豹免费wifi

   设置无线网卡作为发射端,很是很麻烦的。我试过几个方法,1、自己通过控制面板->网络连接->无线连接的属性配置无线网络,发现很难搞,不一定能成;2、通过360的免费wifi软件设置,发现这些软件只能在电脑连接互联网的情形下,才能使无线网卡发射信号;3、最后试了猎豹免费WIFI,发现这是个好东西,可以一键设置局域网发射端,不需要电脑连接互联网。



 

   另外,如果开发机和目标机都在统一的路由器的局域网中,那么二者可以都不做发射端,都只做接收端就可以。

3、设置开发机和目标机能共享文件

局域网搭好之后,要确保开发机和目标机能相互ping通,并实现文件读写共享,这是VS2010远程调试的前提。

(1)、XP系统的文件共享

1、“我的电脑-工具-文件夹选项-查看”:去掉“使用简单文件共享(推荐)”前的勾;然后设置共享文件夹,并设置共享权限;接着指定共享文件夹用户权利;

2、“右键网上邻居-右键本地链接-属性”:启用“Microsoft网络客户端”;启用“Microsoft网络的文件和打印机共享”;安装NetBIOS网络协议;双击“TCP/IP协议”为每台电脑指定同一网段静态IP地址及网关;接着点击“高级-设置”关闭Windows自带防火墙

3、“右键我的电脑-管理-服务和应用程序-服务”:在右窗中确保“Computer Browser”服务没有被停止或禁用;

4、“控制面板-管理工具-本地安全策略-本地策略”:“用户权利指派”-“从网络访问此计算机”中加入Guest帐户;“拒绝从网络访问这台计算机”中删除Guest帐户;“安全选项”-把“网络访问:本地帐户的共享和安全模式”设为“典-本地用户以自己的身份验证”;

5、最后,右键单击你需要共享的文件夹,然后选择“共享”,并设置好相应权限。

(2)、win7如何共享文件

1:设置网卡参数

进入控制面板选择“查看网络状态和任务“,选择更改适配器设置,进入本地网络设置。在使用的本地连接上点击右键选择属性,在弹出的界面中双击“Internet协议版本4”进入网络参数设置。
设置网卡参数

2:打开Win7共享设置

在“打开网络和共享中心”界面中单击左侧的“更改高级共享设置”,打开“高级共享设置”窗口,

设置网络发现,文件和打印机共享,公用文件夹共享为启用,关闭密码保护共享,设置完成后,单击保存修改即可。

更改文件共享设置

3:开启Win7文件夹共享功能

右键单击需要共享的文件夹选择属性,选择“共享”,再点击下方的“高级共享”,在弹出的窗口中选择共享此文件夹。

设置文件夹共享

4:关闭Win7防火墙

防火墙有可能造成局域网文件的无法访问。进入“网络和共享中心”,单击“Windows的防火墙”,在打开的“Windows的防火墙”窗口中,单击“打开或关闭Windows防火墙”命令,

在打开的窗口中选择“关闭Windows防火墙”选项,单击“确定”保存。

关闭防火墙

5:启用Win7文件夹共享规则

防火墙关闭后,在“防火墙设置”界面左边的“高级设置”中,在“入站规则”和“出站规则”这两个规则中分别找到“文件和打印机共享”选项,并且将其全部选项设定成“启用规则”。

6:设置Win7文件共享权限

Windows7中要实现文件共享还需要设置文件夹的共享权限。查看共享文件的属性,随后切换到“共享”选项卡里,单击“高级共享”,打开“高级共享”对话框,在“权限”中依次单击“添加”→“高级”→“立即查找”。然后在查找的结果中选择“Everyone”,并且根据需要设置好用户的操作权限。

7:打开Win7 NTFS格式文件权限

Windows7中我们使用的磁盘格式为NTFS,还需要设置NTFS格式的权限。右键单击需要共享的文件夹,依次选择“属性”→“安全”,在“组或用户名”栏点“编辑”,再点“添加”,在“输入对象名称来选择”中输入“Everyone”点“确定”即可。

8、“控制面板-管理工具-本地安全策略-本地策略”:“用户权利指派”-“从网络访问此计算机”中加入Guest帐户;“拒绝从网络访问这台计算机”中删除Guest帐户;“安全选项”-把“网络访问:本地帐户的共享和安全模式”设为“典-本地用户以自己的身份验证”;

4  VS2010的远程调试

局域网环境搭好之后,就可以进行VS2010的设置了,假设开发机为A、目标机为B。VS2010安装在A机器上,也就是说A机器是开发使用的机器。B机器是程序运行部署使用的机器。

先在B机器上建立共享文件夹,有读写功能,方面复制文件。

(1)不带身份验证的远程调试

    不带身份验证的远程调试,本人测试过,只能对非托管VC等代码进行调试,对托管代码和C#程序无法调试。

1、在B机器的上开启远程调试器

a、在A机器上的vs2010安装目录倒找Remote Debugger文件夹。如下图:

b、复制C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger目录到B机器上,(通过共享文件夹的方式)。

c、运行B机器中Remote Debugger\x86下的msvsmon.exe文件如下图:(注意以管理员的程序运行msvsmon.exe)

d、在上图中选择Tools中的Options菜单项,如下图:

e、在弹出的对话框中按照下列方式进行设置,如下图:

f、设置完成后点击OK按钮

到此需要调试的机器B的远程调试器已经设置完毕。

2、将执行程序复制到B机器

将.exe和.pdb文件一起复制到B机器上,pdb文件包括的调试信息,一定要复制。

3、开发机A机器的工程设置

在A机器上打开MotorTest.exe对应的源码(注意源码必须与MotorTestexe保持一致,本文只给出调试方法,例子中代码无任何逻辑)。可以通过附加到进程进行调试,也可以设置工程属性直接调试。一般而言,附加到进程是目标机上的执行程序已经在运行了,需要调试其运行状态的时候才用。工程属性直接调试,则修改代码之后,直接启动工程,就能在目标机上运行程序。

a.附加到进程的调试设置

在8中选择Debug菜单中的Attach to Process子菜单项,如下图:

弹出如下对话框:

10、在Transport中选择:Remote(Native onlywith no authentication)选项,并在Qualifier中输入IP地址,192.168.1.129.如下图

点击Refresh按钮,就可以看到B机器上的进程列表了。在进程列表中找到我们需要调试的的进程MotorTest.exe并选中

12、选择需要调试的进程后,单击Attach,就可以调试B机器上的程序。

b.工程属性直接调试

工程属性,将调试器选择为远程window调试器,按照上图进行设置,注意IP设置成目标机的IP地址。程序编译好之后,将.exe和.pdb一并复制到目标机B上,再开发机A上,按下F5就能直接启动B上的执行程序,并进行调试。

(2)带身份验证的远程调试

   带身份验证的远程调试,本人测试过,能对非托管VC等代码进行调试,也能对托管代码和C#程序调试。

   设置地方和不带身份验证的远程调试一样,只是设置过程有所变化。

前提条件:

(1)将目标机B上的操作系统的用户名和密码与开发机A上的用户名及密码保持一致。

(2)在目标B机上建立一个与开发机执行程序一致的路径,并只能将A机器编译好的执行程序放在B机器的相同目录下。

例如:在开发A机器上,

工程编译后的执行程序目录为

这个时候,必须在B机器上相同的目录,放执行程序

远程调试的步骤:

第1步:启动B机器的远程调试器Remote Debugger。启动之后,不要做任何操作即可。

第2步:设置工程属性,如图

注意:远程服务器名称为用户名@机器名。这个设置可以在B机器上的Remote
Debugger启动之后看的到。然后选择带window身份验证的访问即可。远程服务器名称如下图

第3步:对于C#和WPF的远程调试

只需要设置一下远程计算法的名称。

时间: 2024-10-05 23:23:33

VS2010远程调试你的程序vc++/wpf/C#/MFC的相关文章

VS2010远程调试

VS2010远程调试 (虚拟机中无问题) 问题的产生是用自己编写的程序查看电脑中安装的系统的版本和是32位或者64位,我需要测试win8,我只是有一个win8的虚拟机系统,但其中没有安装任何IDE,不能够直接调试我的测试程序,所以省力的方法是远程调试.下面介绍方法: 一.用everything寻找Remote Debugger关键字定位到vs2010的安装目录中,或者直接寻找"C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\

VS2010远程调试C#程序

场景: 客户的计算机运行程序出现异常,由于办公场所不在一起,无法直接在客户的机器上调试.此时希望可以直接在开发人员的计算机(本地机器)上远程调试客户机上的软件. 假设: 本地机器的系统账户为 GIS,密码为 111 客户机器的计算机名为 Client 要调试的程序名称为 test.exe 解决方法: 1.客户机器配置 新建与本地机器一致的系统账户 要保证账户和密码一致 在控制面板 -> 用户账户 -> 添加GIS账户,并设置密码为111 切换到GIS账户中 开启远程服务 控制面板 ->

使用 MyEclipse远程调试 Java 应用程序

远程调试,需要本程序和服务器上的程序源码是相同的,这我们服务器使用的是tomcat7.在本地通过MyEclipse 10来调试服务器上的代码,需要本地能访问到服务器,我的服务器是在linux下. 1.对服务器上的tomcat7 bin目录下的   catalina.sh  文件进行修改 # Uncomment the following line to make the umask available when using the # org.apache.catalina.security.S

gdb 远程调试 android native 程序

先看一张原理图: 我是 Linux 和 Android 双料 0 基础,目前对 gdb 了解的很浅显.(注意:在 Android 上执行的命令,需要在 adb shell 下执行.) ①      打开命令终端(Ctrl + Alt + T),输入 adb shell.在 Android 的 data 目录下新建一个目录,如 dog_ld. ②      将 gdbserver 和要调试的程序从 Linux 拷贝到 Android 的 /data/dog_ld 目录. ③      进入 And

vs2010远程调试断点无效问题

ps:本人按照下面的方式设置成功,个人感觉写的也比较清楚 来源:http://www.cnblogs.com/OpenCoder/archive/2010/02/17/1668983.html ? vs支持远程调试但是对于通过?匿名调试的方式实际上是无法设置断点的,因为符号没有加载!要想调试,必须采用windows身份验证! 也就是和远程主机设置一样的用户名和密码. VS是支持远程调试的,这样在自己公司就可以远程调试在客户机上的程序了 VS的远程调试分为两种: 直接远程调试:这种调试方法必须在有

用GDB远程调试android native程序

上次写了几个native程序,想着如何调试,经过一阵子搜索和测试,终于完成了.有几个关键点: 1 gdb和gdbserver 因为这两个需要配套,建议使用同一个ndk下面的gdb和gdbserver gdbserver的是在 android-ndk-r9\prebuilt\android-arm\gdbserver 这个目录下 gdb 是在 android-ndk-r9\toolchains\arm-linux-androideabi-4.8\prebuilt\windows-x86_64\bi

Windowns下远程调试Linux下程序(MinGW+GDB+SlickEdit+GDBServer)(有待完善)

前言: 本文思路来自嵌入式开发,Linux下远程调试开发板.废话不多说,开始吧!! Windown端: 一.下载和解压MiniGW, 从官网下载MiniGW,解压.(本例放在C:\) 二.下载和解压GDB:下载地址为:http://ftp.gnu.org/gnu/gdb/(本文以gdb-7.2为例,放在C:\) 三.在Windowns下编译GDB 运行C:\MinGW\msys\1.0\msys.bat $ cd c: $ cd gdb-7.2 $./configure --target=i68

vs2010 远程调试WEB项目

这2天在做web项目扩展开发.碰到调试时甚是头疼.于是按照网上罗列的远程调试办法.进行调试,结果就不能命中断点. 很是恼火. 于是搜索了MSDN: 原来是人家不支持WEB的远程调试:怪不得不命中. 如果小伙伴们要远程调试WEB项目下载个VS2012吧.具体方法如下: MSDN有介绍:MSDN 系统要求:WIN7专业版.旗舰版 需要注意的是:一定要分清你的是64位还是86位的系统和服务器上的权限:

使用Eclipse远程调试及原理

今天定位Linux Server端的Java应用程序的问题,使用了 Eclipse 远程调试 Java 应用程序,这恐怕是定位Server端最常见也是最根本的方法,居然至少有两位有好几年开发经验的同事都不知道这个方法,我也感觉十分诧异. 本文在介绍使用Eclipse远程调试Java应用程序之外,着重解析了远程调试的原理. JVM原理 众所周知,Java由于引入了虚拟机JVM,拥有了很好的跨平台和安全性,.java文件由Javac编译成.class文件也叫字节码文件,字节码文件由JVM执行,并由翻