在程序开发过程中,都会存在调试,有些程序需要在特定的机器上运行,而开发时由不能再特定机器上安装开发工具,因此就存在远程调试,window下的调试和linux下调试也存在差异,这里以window调试和linux调试为例,记录调试环境的搭建
1. VS2010远程调试Window程序,存在2种方案。
一、目标机器设置:
首先进入VS2010安装目录,找到Remote Debugger, E:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE\Remote Debugger(根据不同电脑路径有差别)
里面有3个目录,根据目标机器不同,拷贝不同的目录到目标机器,在目标机器里面运行msvsmon.exe程序
二、本地机器设置
1)打开VS2010,选择Tools->Attach to Process
输入目标机器IP,点击Refresh,列表里面会显示目标机器中的所有进程,点击Attach,就可以加载目标机器程序进行调试。
这样设置调试的前提是目标程序需要是Debug版本,包含编译的pdb文件。同时由于目标机器运行的是Debug版本,需要拷贝依赖的一些VS库。
由于目标程序是从本地机器编译拷贝过去的,因此本地调试时,可以找到源码进行调试。
2)点击File->Open->Project/Solution找到需要调试的exe文件打开
在Solution中右键点击Properties,在Debug Source Files中添加源码路径
点击打开的exe文件,右键Properties
在Executable中输入目标机器上需要调试的程序路径(不是相对本机的共享路径)
在Connection中输入没有认证的远程调试
在Machine中输入目标机器是IP地址
在Working Directory中输入exe所在的目录
这样设置后就可以直接启动远程程序进行调试。和第一种方案差别是,在方案一中程序已经运行,只能是附加调试,而方案2可以直接启动程序运行。
2. Linux远程调试,采用客户端调试服务器端
1)服务器端在终端输入:gdbserver 客户端IP:端口 服务器端需要调试的程序
2)客户端在终端输入:gdb file 服务器端运行的程序
> target remote 服务器端IP:端口
这样调试的时候就可以找到源码
一、 在调试过程中,如果不想停在系统中断中,可以输入handle all noprint nostop
二、根据已经运行的程序,使用attach 命令 ,解除使用detach