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远程调试(亲试成功)的更多相关文章

  1. VC++ 6.0远程调试配置

    VC开发环境之所以提供远程调试的能力,是因为有些情况下单机调试会让你崩溃掉...比如,调试GUI程序的WM_PAINT消息,因为要单步调试,所以调试器会对界面的重绘产生副作用(Heisenberg不确 ...

  2. vc 6.0 远程调试

    http://blog.sina.com.cn/s/blog_45eaa01a01014eb5.html

  3. VS2008 远程调试器未成功安装,没法使用?

    Win7 64位系统,安装VS2008后,想使用远程调试功能,结果不能使用! 在VS2008的安装包下有个 Remote Debugger 的文件夹,在里面找到 x64 的 rdbgsetup.exe ...

  4. VC++6.0 打印调试信息

    1.在MFC中加入TRACE语句 2.在TOOLS->MFC TRACER中选择 “ENABLE TRACING”点击OK 3.进行调试运行,GO(F5)(特别注意:不是执行‘!’以前之所以不能 ...

  5. linux上安装mysql,亲试成功

    安装mysql参考 网址https://blog.csdn.net/a774630093/article/details/79270080 本文更加详细. 1.先检查系统是否装有mysql rpm - ...

  6. linux重新设置密码,亲试成功

    1:进入/etc/my.cnf 在[mysqld]下添加一行skip-grant-tables 2:保存配置文件后,输入whereis systemctl(提示redirecting to 某个目录下 ...

  7. eclipse远程调试Hadoop

    环境需求: 系统:window 10 eclipse版本:Mars Hadoop版本:2.6.0 资源需求:解压后的Hadoop-2.6.0,原压缩包自行下载:下载地址 丑话前头说: 以下的操作中,e ...

  8. VC++ 6.0中实现三叉切分窗口与多视图 [转]

    一.引用 当用户需要同时对文当的不同部分进行编辑时,常常会用到切分窗口;这些窗口可以都是相同的视,或者一个窗口为列表视,而另一个为树型视图.应用程序框架有多种方式来表示多视图,切分窗口是其中的方式之一 ...

  9. Spring boot 远程调试

    设置远程调试,可以在正式环境上随时跟踪与调试生产故障. 依赖 在 pom.xml 中增加远程调试依赖(试了下,不加也行). <plugins> <plugin> <gro ...

随机推荐

  1. 深入理解IoC和DI

    本文章转载自: https://segmentfault.com/a/1190000005602011 最近在研究php的lumen框架和phalcon框架,这两个框架的底层架构都用到了IoC,DI, ...

  2. THEOS的第一个TWeak的成功创建

    THEOS的第一个TWeak的成功创建html, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMi ...

  3. 【Unity Shader】UnityCG.cginc中一些常用的函数

    // 摄像机方向(视角方向) float3 WorldSpaceViewDir(float4 v) // 根据模型空间中的顶点坐标 得到 (世界空间)从这个点到摄像机的观察方向 float3 Unit ...

  4. tar包解压后用户名改变

    最近开发项目时在PC上wang用户及组下打包的tar包解压到嵌入式设备root用户下,文件目录及文件用户名改为dbus和dbus组,导致cron等应用异常. 出现此问题时可以通过修改相应文件(件)的用 ...

  5. Java编程的逻辑 (50) - 剖析EnumMap

    本系列文章经补充和完善,已修订整理成书<Java编程的逻辑>,由机械工业出版社华章分社出版,于2018年1月上市热销,读者好评如潮!各大网店和书店有售,欢迎购买,京东自营链接:http:/ ...

  6. 通过github搭建个人博客

    今天突发奇想,想用GitHub搭建一个个人博客,就大概学习了一下,特此记录. 其实非常简单,首先要知道,这里是通过GitHub Pages进行搭建的,什么?不知道什么是GitHub Pages?Git ...

  7. android开发(42) 使用andorid操作蓝牙打印机

    最近接到一个需求,使用android发起打印任务,通过蓝牙连接打印机.条件如下: 打印机:南京富士通DPK760E,具有蓝牙功能 Android手机:普通手机,Android 4.4版本,具有蓝牙功能 ...

  8. 【嵌入式】——arm裸机开发 step by step 之 串口通信

    一.在使用S5PV210的串口发送和接收的时候,首先要对S5PV210的串口进行配置,我们使用轮询方式时的配置有哪些? 1.配置GPIO,使对应管脚作为串口的发送和接收管脚 GPA0 0 1 管脚 2 ...

  9. 初探Asp.net请求机制原理 1

    web原理 请求---响应 而一个 简单的请求 响应中包含太多知识,只有把 请求响应原理搞懂才能在web的世界里好好翱翔(注:自已的整理的知识参考博友们东西或自已所想,没有盗版权的意思,在此说明就不引 ...

  10. 超频,如何超频CPU和显卡?

    首先是良好的硬件体制,CPU.内存和显卡都必须是健康的,在100%负荷下工作也能拥有合理的温度和功耗.其次就是硬件准备,超频需要一块强大的主板做支撑,特别是主板供电部分,考虑到CPU和内存超频后功耗大 ...