相关环境信息:开发机Win7 x64、远程机器WinXP、调试器是CDB、Qt版本5.2.1

一、部署远程机器环境

我这里用的是虚拟机(Windows XP),根据你要调试的程序选择安装不同架构的WinDbg,因为安装文件不大,所以我一般都会装上
附上下载地址:
dbg_i386_6.12.2.633:http://download.csdn.net/detail/aqtata/7210807
dbg_amd64_6.12.2.633:http://download.csdn.net/detail/aqtata/7210817

安装过程很简单,下一步就行了。安装好后第一件事情就是设置调试符号路径,添加系统环境变量_NT_SYMBOL_PATH
值填写为SRV*D:\Symbols*http://msdl.microsoft.com/download/symbols
其中"D:\Symbols"是符号路径,根据自己的情况修改

接着回到本机,把QtCreator目录下的qtcreatorcdbext.dll复制到远程机器上
x86:"\lib\qtcreatorcdbext32\qtcreatorcdbext.dll"
x64:"\lib\qtcreatorcdbext64\qtcreatorcdbext.dll"

根据需要复制一个就行了,我这里复制的x86的,拷贝到"D:\DebugServer"下面

然后添加系统环境变量_NT_DEBUGGER_EXTENSION_PATH,并指向这个目录

二、部署Qt程序运行环境

Qt程序离不开它的那些个DLL文件,所以我们根据自身程序的依赖要把相关DLL拷进到调试机器上
一个Windows下的窗口Qt程序,至少需要4个DLL:Qt5Widgetsd.dll、Qt5Guid、Qt5COred、qwindowsd.dll
注意我这里拷贝的是调试版本,而且我的Qt是自行编译的,需要依赖的DLL没有官方安装版那么多
在Qt目录下的lib文件夹里找到相关DLL复制到远程机器

最后文件结构如下:

D:\DebugServer\qtcreatorcdbext.dll
D:\Qt\Qt5Cored.dll
D:\Qt\Qt5Guid.dll
D:\Qt\Qt5Guid.dll
D:\DebugServer\Qt\plugins\platforms\qwindowsd.dll

注意,因为Windows下的程序依赖qwindowsd.dll,而它是以插件的形式存在的,所以需要设置特别的路径
继续添加环境变量QT_PLUGIN_PATH,将其指向plugins目录

并将"D:\DebugServer\Qt"添加到PATH中,以便我们的程序在任何位置都可以运行起来

因为我这边是用的msvc2013编译器,把依赖的msvcp120d.dll和msvcr120d.dll也一起拷贝到Qt文件夹中了
这个其实拷贝到System32目录下也可以

三、开始远程调试

在本机新建一个窗口工程并在main.cpp中加一句输出当前系统版本号的语句

  1. #include "mainwindow.h"
  2. #include <QApplication>
  3. #include <QSysInfo>
  4. #include <QDebug>
  5. int main(int argc, char *argv[])
  6. {
  7. QApplication a(argc, argv);
  8. MainWindow w;
  9. w.show();
  10. qDebug() << QSysInfo::windowsVersion();
  11. return a.exec();
  12. }

生成Debug版,并将exe文件复制到远程机器的C:\下,完整路径是C:\Demo.exe
从CMD中启动cdb.exe(在WinDbg根目录下)并附上相关参数:cdb.exe -server tcp:port=123 c:\demo.exe

-server是启动调试服务,port设置了调试端口

第一次启动的时候可能要等一会,因为需要下载调试符号文件
当看到等待用户输入的时候表示已经可以开始调试了

回到QtCreator中选择"挂接到一个CDB会话..."

然后设置远程机器的IP和端口,点击确定
此时远程机器上的调试服务器已经开始工作了,第一次的话因为需要下载调试符号所以要等一会

最后可以看到调试窗口输出了"48",对应Qt中的枚举值QSysInfo::WV_XP

http://blog.csdn.net/aqtata/article/details/24926633

配置QtCreator+CDB远程调试环境(要设置_NT_SYMBOL_PATH和QT_PLUGIN_PATH和Path)的更多相关文章

  1. 配置QtCreator+CDB远程调试环境(用到了符号表) good

    相关环境信息:开发机Win7 x64.远程机器WinXP.调试器是CDB.Qt版本5.2.1 一.部署远程机器环境 我这里用的是虚拟机(Windows XP),根据你要调试的程序选择安装不同架构的Wi ...

  2. VS2015配置Linux开发远程调试

    # VS2015配置Linux开发远程调试 ### 简介-----------------------------vs2015支持跨平台开发 ### 软件环境--------------------- ...

  3. Eclipse IDE配置PHP开发、调试环境

    前言 使用java语言开发的朋友想必对Eclipse开发工具已经不陌生了,那么Eclipse作为java主流的开发工具,是否能够开发PHP项目呢?答案如你所想,肯定是可以的!以下就是该IDE下如何配置 ...

  4. PhpStorm Xdebug远程调试环境搭建原理分析及问题排查

    2017年05月26日  经验心得 目录   一. 环境介绍 二. 远程环境配置 2.2 Xdebug安装 2.3 配置 三. 本地phpstorm配置 3.1 下载远程代码 3.2 添加php解释器 ...

  5. 配置tomcat的远程调试

    参考文档: http://jingyan.baidu.com/article/0320e2c1f4ef6b1b87507b06.html http://flyer2010.iteye.com/blog ...

  6. vs Code配置C++运行和调试环境以及相关问题

    vs Code配置C++运行和调试环境以及相关问题 第一步:下载c++插件 第二步:安装编译.调试环境 如果没有Dev-C++下载MinGW 下载地址:https://sourceforge.net/ ...

  7. 在Mac系统上配置Android真机调试环境

    在Mac系统上配置Android真机调试环境 mac上配置安卓环境还说挺方便的,真机调试也比win上要好一些.win上被各种软件强行安装了xxx助手. 在mac上就了一个干净的感觉. 下载Androi ...

  8. VSCODE 配置远程调试环境

    以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16691460.html 我的需求是,在Windows桌面 ...

  9. Python测试进阶——(2)配置PyCharm远程调试环境

    新建一个Python项目 配置Deployment,用于本地文件和远程文件的同步,在pycharm的菜单栏依次找到:Tools > Deployment > Configuration 点 ...

随机推荐

  1. 制作Linux(Fedora、Ubuntu、CentOS)优盘启动

    随着嵌入式技术的快速发展,Linux快速发展过一段时间.虽然现在不是很热,但是linux在现实社会的使用还是很有用处.而光盘有有些落伍,不仅浪费而且不环保,所以质优价廉的优盘就脱颖而出.所以,用优盘制 ...

  2. ORM框架Hibernate (四) 一对一单向、双向关联映射

    简介 在上一篇博客说了一下多对一映射,这里再说一下一对一关联映射,这种例子在生活中很常见,比如一个人的信息和他的身份证是一对一.又如一夫一妻制等等. 记得在Java编程思想上第一句话是“一切皆对象”, ...

  3. NanShan即时通讯论——HTML5的优势与劣势

    原文:NanShan即时通讯论--HTML5的优势与劣势 NanShan即时通讯 学习html时才是XHTML 1.0,接着是 HTML4.01,再到HTML5,如今HTML5 開始吸引越来越多的人的 ...

  4. android的fragments管理

    FragmentManager 为了管理Activity中的fragments,需要使用FragmentManager. 为了得到它,需要调用Activity中的getFragmentManager( ...

  5. C语言拾遗--static

    C程序一直由下列部分组成: 正文段——CPU执行的机器指令部分:一个程序只有一个副本:只读,防止程序由于意外事故而修改自身指令: 初始化数据段(数据段)——在程序中所有赋了初值的全局变量,存放在这里. ...

  6. Docker学习笔记(3) — docker仓库的镜像怎么删除

    docker越来越炙手可热,如果你的团队已经准备开始使用docker,那么私有仓库是必不可少的东西,首先是可以帮助你加快从服务器pull镜像的速度,其次也可以帮助你存放私有的镜像,本文主要为大家介绍如 ...

  7. api 跳转规则

    api 配置: <Context docBase="zjzc-web-api" path="/api" reloadable="false&qu ...

  8. boost库中thread多线程详解2——mutex与lock

    1. mutex对象类 mutex类主要有两种:独占式与共享式的互斥量.▲ 独占式互斥量:mutex: 独占式的互斥量,是最简单最常用的一种互斥量类型try_mutex: 它是mutex的同义词,为了 ...

  9. ASIHTTPRequest-插件的使用

    链接地址:http://blog.sina.com.cn/s/blog_7b9d64af0101e5uf.html 一.什么是ASIHTTPRequest   ASIHTTPRequest 插件是一个 ...

  10. Goodle Clean设计架构

    Goodle Clean设计架构 23 * @param <P> the response type 24 */ 25 public abstract class UseCase<Q ...