配置QtCreator+CDB远程调试环境(用到了符号表) good
相关环境信息:开发机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中加一句输出当前系统版本号的语句
- #include "mainwindow.h"
- #include <QApplication>
- #include <QSysInfo>
- #include <QDebug>
- int main(int argc, char *argv[])
- {
- QApplication a(argc, argv);
- MainWindow w;
- w.show();
- qDebug() << QSysInfo::windowsVersion();
- return a.exec();
- }
生成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远程调试环境(用到了符号表) good的更多相关文章
- 配置QtCreator+CDB远程调试环境(要设置_NT_SYMBOL_PATH和QT_PLUGIN_PATH和Path)
相关环境信息:开发机Win7 x64.远程机器WinXP.调试器是CDB.Qt版本5.2.1 一.部署远程机器环境 我这里用的是虚拟机(Windows XP),根据你要调试的程序选择安装不同架构的Wi ...
- VS2015配置Linux开发远程调试
# VS2015配置Linux开发远程调试 ### 简介-----------------------------vs2015支持跨平台开发 ### 软件环境--------------------- ...
- Eclipse IDE配置PHP开发、调试环境
前言 使用java语言开发的朋友想必对Eclipse开发工具已经不陌生了,那么Eclipse作为java主流的开发工具,是否能够开发PHP项目呢?答案如你所想,肯定是可以的!以下就是该IDE下如何配置 ...
- PhpStorm Xdebug远程调试环境搭建原理分析及问题排查
2017年05月26日 经验心得 目录 一. 环境介绍 二. 远程环境配置 2.2 Xdebug安装 2.3 配置 三. 本地phpstorm配置 3.1 下载远程代码 3.2 添加php解释器 ...
- 在Mac系统上配置Android真机调试环境
在Mac系统上配置Android真机调试环境 mac上配置安卓环境还说挺方便的,真机调试也比win上要好一些.win上被各种软件强行安装了xxx助手. 在mac上就了一个干净的感觉. 下载Androi ...
- 配置tomcat的远程调试
参考文档: http://jingyan.baidu.com/article/0320e2c1f4ef6b1b87507b06.html http://flyer2010.iteye.com/blog ...
- vs Code配置C++运行和调试环境以及相关问题
vs Code配置C++运行和调试环境以及相关问题 第一步:下载c++插件 第二步:安装编译.调试环境 如果没有Dev-C++下载MinGW 下载地址:https://sourceforge.net/ ...
- VSCODE 配置远程调试环境
以下内容为本人的著作,如需要转载,请声明原文链接微信公众号「englyf」https://www.cnblogs.com/englyf/p/16691460.html 我的需求是,在Windows桌面 ...
- Python测试进阶——(2)配置PyCharm远程调试环境
新建一个Python项目 配置Deployment,用于本地文件和远程文件的同步,在pycharm的菜单栏依次找到:Tools > Deployment > Configuration 点 ...
随机推荐
- BZOJ 1090 - 区间dp
Magic Door 题目大意: 给一个字符串,可以将重复的串缩成x(a),表示x个a,求能缩成的最小长度. 题目分析 区间dp: dp[i][j]表示i~j处理后的最小长度, 则有 \[dp[i][ ...
- 学习OpenCV研究报告指出系列(二)源代码被编译并配有实例project
下载并安装CMake3.0.1 要自己编译OpenCV2.4.9的源代码.首先.必须下载编译工具,使用的比較多的编译工具是CMake. 以下摘录一段关于CMake的介绍: CMake是一个 ...
- [Android]Fragment自定义动画、动画监听以及兼容性包使用
Fragment是Android在API 11之后加入的一个组件,对提高Android开发中的布局合理性和布局效率都有很大作用,尤其是在Android平板等大屏幕设备的开发中,Fragment的引入能 ...
- java 读取项目外面配置文件的方法
public static void loadProps(String propertiesUrl) { props = new Properties(); InputStream in = null ...
- jQuery分离构造器
http://www.imooc.com/code/3401 通过new操作符构建一个对象,一般经过四步: A.创建一个新对象 B.将构造函数的作用域赋给新对象(所以this就指向了这个新对象) ...
- Backbone Collection
http://yujianshenbing.iteye.com/blog/1748826 如果将一个Model对象比喻成数据库中的一条记录,那么Collection就是一张数据表.它表示为一个模型集合 ...
- 怎么会float交换器int
最近突然想知道编译器整数浮球开关是如何实现的,现在很多信息,但遗憾的是甚至没有这方面的记录,所以我决定实现自己的简单的整数浮点转 随着float开启int为例 double转int类似 在做强转之前 ...
- UVALive 6531 Go up the ultras 单调栈+RMQ
题目链接:点击打开链接 题意: 给定n座山 以下n个数字表示n座山的高度 若这座山u合法,则要满足: 1.若u的左边存在比u高的山,设v是u左边距离u近期的且严格比u高的山,在[v,u]之间至少有一座 ...
- 让你编写的控件库在 XAML 中有一个统一的漂亮的命名空间(xmlns)和命名空间前缀
原文 让你编写的控件库在 XAML 中有一个统一的漂亮的命名空间(xmlns)和命名空间前缀 在 WPF XAML 中使用自己定义的控件时,想必大家都能在 XAML 中编写出这个控件的命名空间了.然而 ...
- OpenCV中基于Haar特征和级联分类器的人脸检测
使用机器学习的方法进行人脸检测的第一步需要训练人脸分类器,这是一个耗时耗力的过程,需要收集大量的正负样本,并且样本质量的好坏对结果影响巨大,如果样本没有处理好,再优秀的机器学习分类算法都是零. 今年3 ...