每次要远程调试的时候都要看半天的xe2英文帮助文档,今天正好有点时间,把它写下来。
一、概述:
首先说明一下,c++ builder 远程调试有两种方式的,一种是被称为是老式的调试方法,这种方法是在远程机器上安装Debugger 也就是其实也就是运行PAServer的rmtdebug163.exe来运行调试的,但是这种方法貌似只能以启动进程的方式调试程序,而不能附加已经存在的进程。而今天我讲的重点是新的远程调试,同时它的功能不仅仅是用在调试,还可以用在跨平台开发当中。原方名字为:The new remote and cross-platform debugging solution,它是用一个Platform Assistant 和一个 remote profile来达到到远程调试的目的。
本文是拿c++ builder xe2为例写的,但绝大多数内容也适用于delphi xe2 并且可以很容易的推广到 xe3 xe4 等版本。
二、具备条件
由于embarcadero rad studio 远程调试都是建立在socket通信基础上的。
所以调试机与被调试机必须是网络连通的,被调试机上有开发机上生成的调试信息符号文件 *.tds (delphi 是 *.rsm)。
可执行文件(*.exe或*dll)你编译生成之后必须复制到被调试机器上
三、部署
1.首先在远程机器(被调试程序所在的机器)上安装PAServer。我的安装文件在 D:\Program Files (x86)\Embarcadero\RAD Studio\9.0\PAServer\setup_paserver.exe
2.在被调试机器上安装好之后运行paserver.exe出现命令提示符界面调试让你输入密码,如果不设置密码直接按回车即可。
3.在调试机器上的c++ builder xe2 上点击菜单->Tools 然后打开找到Remote Profiles窗口如下图所示
点击add增加一个remote profile需要填写以下几项
profilename:名字而已任意写我这里写为teet
platform:这里选择你程序所运行的平台如win 64 或win 32 、ios X等
然后下一步:HostName填写被调试机器的ip地址,PortNumber:默认的,下面密码就填你刚才在被调试机器上那个命令提示符里设置的密码。之后点击Test connection测试一下是否OK,继续点下一步后直接Finish。完成后如下图所示,然后点击OK。
好了,一个remote profile就增加好了。下面就可以调试了。
四、调试
1.附加已经运行的进程
点击菜单 Run->Attach to Process按下图选择
按上图操作之后远程机器上的进程就显示出来了,这样就实现了远程附加调试进程了。这里说明一点,如果要进行源码调试并且要在源码上设置断点什么的,必须把在编译的时候生成的调试信息符号文件复制到被调试机器上。
2.远程创建被调试进程
点击菜单 Run->Load Process 在左边选择remote 然后设置好Remote path(远程调试机器上的被调试程序所有路径)和remote host(同上面选择host的方法)。Params和Working directory是设置命令行和工作目录的,下面after load根据自己需要选择就可以了