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 branch -a 查看远程所有分支列表: git branch -r 拉取远程分支(使用该方式会在本地新建分支x,但是不会自动切换到该本地分支x,需要手动checko ...
- tomcat添加context方式部署web应用
刚巧碰到了,记录一下. 通过context的方式部署会灵活一点,不必一定指向tomcat里面的webapps目录 这种部署有几种方式: 1.在$CATALINA_BASE/conf/ server.x ...
- hbase 学习(十三)集群间备份原理
集群建备份,它是master/slaves结构式的备份,由master推送,这样更容易跟踪现在备份到哪里了,况且region server是都有自己的WAL 和HLog日志,它就像mysql的主从备份 ...
- RavenDb学习(八)高级特性上半部分
.事务支持 别的关系型数据库和RavenDb一起使用 using (var transaction = new TransactionScope()) { BlogPost entity = sess ...
- cocos2d-Lua02Lua面向对象
1 Lua中的面向对象 1.1 问题 lua不是一个面向对象的语言.可是他又有面向对象的思想. lua中的面向对象是伪面向对象.伪面向对象就要用到table实现. 由table模拟了一个面向对象的编程 ...
- jdbc读取百万条数据出现内存溢出的解决办法
本人在做项目实施时,我们使用的是mysql数据库,在不到一个月的时间已经有了2千万条数据,查询的时候非常慢,就写了一个数据迁移的小项目,将这两千万条数据存放到MongoDB中看效率怎么样,再读取数据时 ...
- chrome误删了bookmarks且已经同步清空了google云端的挽救方式
收藏夹里被误删文件恢复步骤:1.快捷键 Win+R 输入 Chrome 的用户数据路径:Windows XP:%USERPROFILE%\Local Settings\Application Data ...
- 关于Unity中的NGUI精灵
NGUI精灵实例 1.创建Unity项目工程和文件目录,保存场景 2.创建一个精灵NGUI---->Create---->Sprite,发现它的UI Sprite组件的贴图属性只支持Atl ...
- Ubuntu上CUDA环境搭建
1.下载CUDA:https://developer.nvidia.com/cuda-toolkit-archive (如果已经安装了N卡驱动,最好用.deb,如果没有安装,可以用.run) 2.根据 ...
- tensorflow 模型前向传播 保存ckpt tensorbard查看 ckpt转pb pb 转snpe dlc 实例
参考: TensorFlow 自定义模型导出:将 .ckpt 格式转化为 .pb 格式 TensorFlow 模型保存与恢复 snpe tensorflow 模型前向传播 保存ckpt tensor ...