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 ...
随机推荐
- 【Android】Android6.0读取通话记录
需求:读取通话记录,然后列表显示,每条记录的数据包括姓名.号码.类型(来电.去电.未接,字体颜色分别为绿.蓝.红),然后长按条目弹出一个列表弹窗,显示[复制号码到拨号盘].[发短信].[打电话]. 先 ...
- IIS7 https 发生413错误 未显示页面,因为请求实体过大
参考文档: http://msdn.microsoft.com/zh-cn/library/cc737382(v=ws.10).aspx http://www.java123.net/v/12 ...
- 数据库并发事务控制四:postgresql数据库的锁机制二:表锁 <转>
在博文<数据库并发事务控制四:postgresql数据库的锁机制 > http://blog.csdn.net/beiigang/article/details/43302947 中后面提 ...
- ubuntu linux下建立stm32开发环境: GCC安装以及工程Makefile建立
http://blog.csdn.net/embbnux/article/details/17616809
- [开发笔记]-初学WPF之自学笔记
一:动态加载背景图片 代码: 在窗体加载时,Window_Loaded 方法中: #region 测试动态加载背景图片 /* 1.图片右键 属性: 复制到输出目录:选择“如果较新则复制” 生成操作选择 ...
- SQLSERVER SQL备份还原代码C#
public class BakDBHelper { /// <summary> /// 创建数据库备份 /// </summary> public string Create ...
- Redis哈希
Redis的哈希值是字符串字段和字符串值之间的映射,所以他们是表示对象的完美数据类型 在Redis中的哈希值,可存储超过400十亿键值对. 例子 redis 127.0.0.1:6379> HM ...
- Redis有序集合
Redis有序集合类似Redis集合存储在设定值唯一性.不同的是,一个有序集合的每个成员带有分数,用于以便采取有序set命令,从最小的到最大的分数有关. Redis 有序set添加,删除和测试中的O( ...
- windows10删除开始菜单中的xbox、人脉、邮件等应用
1.右键单击PowerShell,选择“以管理员身份运行” 2.输入下面的命令回车,会列出系统中所有已安装应用列表. Get-AppxPackage -AllUsers 从列表中找到你要卸载的应用,并 ...
- APICloud 实践 —— 安装与创建应用
1.安装APICloud Studio 下载地址:https://www.apicloud.com/devtools 2.打开 APICloud Studio,登录 3.登录成功,在 代码编辑器 创建 ...