前言
最近遇到一个问题:组态王在本地调试机上运行正常,但在远程测试机上运行却出现了崩溃。本机上装有Visual Studio 2008,测试机上则没有。于是,在网上找资料,想利用远程调试方法,在本机上调试测试机出现的软件崩溃问题。
基本概念
1、 目标机:
远程需要调试的机子,也就是被调试程序exe所在的机子,VS2008可装可不装。
2、 调试机:
安装VS2008的机子,就是存放代码设断点调试的机子,须装VS2008。
远程调试配置
目标机配置:
如果目标机安装了VS2008则直接在【开始菜单】->【Microsoft Visual Studio2008】->【VisualStudio Tools】下面找到Visual Studio 2008 Remote Debugger运行即可;
如果目标机没有安装VS2008则需要将调试机上VS2008安装目录下相应的远程debug工具(路径:C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\Remote Debugger\x86\msvsmon.exe)拷贝到目标机应用程序所在的目录下,然后运行。
注意:此处要根据你的程序是32位或者64位选择不同的版本,如果是在Win7下面还要以管理员身份运行。如果是第一次运行可能需要设置防火墙,请允许防火墙放行,具体设置方法请自行百度。
运行后,选择【Tools】->【Options】设置Debugger参数如下:
此处设置无身份验证模式(No Authentication),并且允许任何用户进行调试,端口默认为4015,最大空闲时间为900秒。确定后,(如下图所示)目标机的设置就基本完成了~
调试机配置:
打开VS2008,打开要调试工程的属性,在Debugging选项页内,做如下设置:
其中,Remote Command 中的路径为目标机上要调试的exe的绝对路径;Remote Server Name为目标机的IP地址(与调试机在局域网同一网段);Connection和Debugger Type与目标机的设置保持一致。
设置完成后按F5即可远程调试目标机程序,此时目标机调试器输出此时建立的远程调试连接,如下图所示:
需要注意的几个地方:
1、调试机和被调试机都在一个局域网内,且必须在一个网段
2、调试机和被调试机必须登录相同的用户,用户名必须一直关闭防火墙或打开相应的端口,一般是4015。
3、 确保目标机上要调试的exe程序与调试机保持一致,否则导致无法设置断点,PDB不一致。