VC++6.0远程调试(亲试成功)
0 前言
VS2008及以上远程调试上篇已经讲过,这里再讲下VC++6.0开发环境下的远程调试能力,仅需下面4步即可,更方便的就接着后面的5-6步。
因为目标程序需要在有采集卡等相关硬件支持下的工控机上工作,工控机上面一般没有调试环境也不会放置源代码(出于保密)。假如工控机上的目标程序运行中出了问题,就需要有调试环境却无法安装采集卡等硬件的笔记本上进行远程调试。
1 远程调试条件
1.两者之间使用有线或无线连网。
2.目标机器与本机的调试机器连接通讯,需要四个文件:MSVCMON.EXE、DM.DLL、TLN0T.DLL和MSDIS110.DLL。它们可在VC6安装文件夹的Common/MSDEV98/Bin下面找到。
3.VC 调试程序执行需要的三个动态库文件:MFC42D.DLL,MFCO42D.DLL,MSVCRTD.DLL,有时可能需要ntdll.dll,它们可在系统文件夹\windows\system32下找到。
或者通过搜索方式找到以上所需的8个文件,开始--搜索--文件或文件夹--在"要搜索的文件或文件夹名为"框中,输入上面的文件,点"立即搜索"按钮搜索,然后将它们全部复制到远程目标机器的执行程序文件夹E:\remote下即可。具有以上条件后,在远程目标机器上双击运行msvcom.exe,不管其它设置,直接点"Connect"按钮即可。
注意:在Win7之后的系统下,这些文件可能需要和被调试的可执行程序,放在一个文件夹下才可以。
2 开发环境的远程调试设置
在本机的开发环境中,打开远程调试开关,点菜单 Build——Debugger Remote Connection...,弹出窗口,默认是在Local项(本地,不远程调试时,要改回本地选项),现在要选远程的Network(TCP/IP),然后点按钮Settings...,在弹出框中,输入远程目标机器的IP或者机器名,比如:10.10.1.63,最后点OK即可。
3 设定目标机器的执行路径和文件名
比如在本机笔记本上调试生成的可执行程序名为c:\dkqchtx\debug\dkqchtx.exe,在远程目标机器工控机上的路径为e:\remote\dkqchtx.exe,那么,在本机开发环境的菜单 Project —— Settings,在Debug页面底部的Remote executable path and file name框中,输入在远程的工控机上程序运行所在的路径和文件名:e:\remote\dkqchtx.exe。
4 启动调试
编译一下程序,把新编译出来的dkqchtx.exe复制到目标机器的e:/remote下面,就可以在本地机器上启动调试了。调试中的询问的信息(可能会有很多)一律按确定即可。
=============
虽然到此就完成了整个远程调试项目,但是这样有一个问题,就是每次小小的改动,编译链接后,都需要将本地机器上的执行文件复制到远程机器设定的路径下才可以调试,也就是需要始终保持两者完全一致,调试就很不方便,为了改变这种状况,可将远程目标机器的执行程序所在的文件夹读写共享,让本机笔记本上登录的用户具有读写权,直接将编译链接的执行程序放到远程目标机器上。
5 将本地生成的可执行程序直接放到远程机器的读写共享文件夹下,以方便调试
1.读写共享远程文件夹
,这样防止多用户读写。点按钮"权限",在弹出框的"输入对象名称来选择"中,输入刘亮,这是两者所在的局域网中,登录到本地笔记本上的用户,点"确定"按钮,刘亮就会出现在"组或用户名称"框中,选择其中的刘亮,将下面3个选项"完全控制","更改","读取"都选上,点"确定"即可,当然可以将用户Everyone 删除会更安全。这样就是让登录本地笔记本上的用户刘亮,具有读写远程机器上的文件夹E:\remote共享后的能力,以便可将输出的可执行程序,直接写入到远程机器的读写共享文件夹remote_share下。
2.设置开发环境的输出文件位置
在本地开发环境的菜单 Project -- Settings...,切换到Link页面,在Output file name框中,输入\\10.10.1.63\remote_share\dkqtx.exe,这里10.10.1.63是远程机器的ip地址,remote_share是文件夹共享后的名称,dkqtx.exe是编译链接后输出的调试文件,这样就将输出直接放到远程读写的共享文件夹下。
3.重新设定执行debug会话和目标机器的执行路径和文件名
在本地开发环境中,Project——Settings...,切换到Debug页面,在Excutable for debug session框中已经跟着自动改为:\\10.10.1.63\remote_share\dkqtx.exe,与上面Link输出设置一致。在本Debug页面底部的Remote executable path and file name框中,要输入在远程的工控机上程序运行所在的路径和文件名:e:\remote\dkqtx.exe 即可。注意,这里的文件名称从原来dkqchtx.exe改为 dkqtx.exe, 也就是说本地和远程上的文件名,可以是任意只要一致就可以了。
重新全编译连接,Build——Rebuild All,就可以了,以后任何的改动就不需要复制文件,调试很方便。
6 将远程共享文件夹映射成本地盘
以上Link输出和 Debug的会话执行,都是较长的子串\\10.10.1.63\remote_share\dkatx.exe, 为了书写简单,可以在本地机器上,将远程机器共享的文件夹映射成一个本地盘符,方法如下:
在本地机器的IE浏览器地址栏里,输入远程机器的IP地址:\\10.10.1.63 按回车,右击出现的共享文件夹remote_share——选择映射网络驱动器,在弹出的页面中的驱动器框中,选择一个你本地没有使用的盘符,比如Y:,这样就将远程机器10.10.1.63下的共享文件夹remote_share,映射成Y: ,以后写\\10.10.1.63\remote_share\dkatx.exe的地方,就可简写为Y:\dkqtx.exe ,使用起来很方便。
当然,调试的总条件,需要选择Debug 调试方式,菜单 Build——Set Active Configuration... ,从中选择 Win32 Debug ,之后需要重新全编译连接,菜单 Build——Rebuild All。
上面的内容大致都是http://blog.sina.com.cn/s/blog_45eaa01a01014eb5.html 中的内容,以下为亲试截图:
最终在目标机器上将程序调试运行起来了~
VC++6.0远程调试(亲试成功)的更多相关文章
- VC++ 6.0远程调试配置
VC开发环境之所以提供远程调试的能力,是因为有些情况下单机调试会让你崩溃掉...比如,调试GUI程序的WM_PAINT消息,因为要单步调试,所以调试器会对界面的重绘产生副作用(Heisenberg不确 ...
- vc 6.0 远程调试
http://blog.sina.com.cn/s/blog_45eaa01a01014eb5.html
- VS2008 远程调试器未成功安装,没法使用?
Win7 64位系统,安装VS2008后,想使用远程调试功能,结果不能使用! 在VS2008的安装包下有个 Remote Debugger 的文件夹,在里面找到 x64 的 rdbgsetup.exe ...
- VC++6.0 打印调试信息
1.在MFC中加入TRACE语句 2.在TOOLS->MFC TRACER中选择 “ENABLE TRACING”点击OK 3.进行调试运行,GO(F5)(特别注意:不是执行‘!’以前之所以不能 ...
- linux上安装mysql,亲试成功
安装mysql参考 网址https://blog.csdn.net/a774630093/article/details/79270080 本文更加详细. 1.先检查系统是否装有mysql rpm - ...
- linux重新设置密码,亲试成功
1:进入/etc/my.cnf 在[mysqld]下添加一行skip-grant-tables 2:保存配置文件后,输入whereis systemctl(提示redirecting to 某个目录下 ...
- eclipse远程调试Hadoop
环境需求: 系统:window 10 eclipse版本:Mars Hadoop版本:2.6.0 资源需求:解压后的Hadoop-2.6.0,原压缩包自行下载:下载地址 丑话前头说: 以下的操作中,e ...
- VC++ 6.0中实现三叉切分窗口与多视图 [转]
一.引用 当用户需要同时对文当的不同部分进行编辑时,常常会用到切分窗口;这些窗口可以都是相同的视,或者一个窗口为列表视,而另一个为树型视图.应用程序框架有多种方式来表示多视图,切分窗口是其中的方式之一 ...
- Spring boot 远程调试
设置远程调试,可以在正式环境上随时跟踪与调试生产故障. 依赖 在 pom.xml 中增加远程调试依赖(试了下,不加也行). <plugins> <plugin> <gro ...
随机推荐
- [git]git project仓库迁移
转自:https://segmentfault.com/q/1010000000124379 如果你想从别的 Git 托管服务那里复制一份源代码到新的 Git 托管服务器上的话,可以通过以下步骤来操作 ...
- u-boot的配置
1 sama5d31dk sama5d3_xplained:SAMA5D3,SYS_USE_NANDFLASH ...
- SqlServer 自动化分区方案
本文是我关于数据库分区的方案的一些想法,或许有些问题.仅供大家讨论.SqlServer (SqlServer 2005\SqlServer 2008)实现分区需要在企业版下进行. SqlServer的 ...
- 解决同时共用MOB公司的shareSDK和SMSSDK的冲突问题
现在mob的SDK版本升级到3.0,跟之前的版本不兼容,尤其是在 同时使用shareSDK和SMSSDK的时候会发生冲突,报NoSuchMethodException的错误. 只需要将所有的jar包和 ...
- How to deal with "Could not find component on update server. Contact VMware Support or your system administrator." in Vmware.
手动将vmware安装目录下的vmtools镜像文件,windows.iso文件放到虚拟机的光区里. 再进入虚拟机的系统,在系统里打开光盘进行安装
- Pandas 的轴向连接 concat
在pandas里面,另一种数据何必运算也被称为连接(concatenation).绑定(binding)或堆叠(stacking). Numpy的轴向连接, concatenation Numpy有一 ...
- SSH-运行main函数,一直报空指针,调依赖注入配置的dao
解决this.getHibernateTemplate()==null的问题 刚刚在整合SSH时碰到了这样一个问题: 当我用junit测试时不会报任何异常,数据也都能得到 但当我运行man函数,直接n ...
- 第三百七十九节,Django+Xadmin打造上线标准的在线教育平台—xadmin的安装
第三百七十九节,Django+Xadmin打造上线标准的在线教育平台—xadmin的安装 xadmin介绍 xadmin是基于Django的admin开发的更完善的后台管理系统,页面基于Bootstr ...
- Java如何格式化AM-PM格式的时间?
在JAVA中,如何格式化AM-PM格式的时间? 该示例使用SimpleDateFormat(“HH-mm-ss a”)构造函数和SimpleDateFormat类的sdf.format(date)方法 ...
- Mybatis trim标签
trim代替where/set标签 trim 是更灵活用来去处多余关键字的标签,它可以用来实现 where 和 set 的效果. <!-- 使用 if/trim 代替 where(判断参数) ...