配置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 点 ...
随机推荐
- [译]async/await中使用阻塞式代码导致死锁
原文:[译]async/await中使用阻塞式代码导致死锁 这篇博文主要是讲解在async/await中使用阻塞式代码导致死锁的问题,以及如何避免出现这种死锁.内容主要是从作者Stephen Clea ...
- N 个互异数的数组的平均逆序数
N 个互异数的数组的平均逆序数为 N(N−1)/4 1. 简单证明 对于任意的数的表 L(5,8,9,6,4),以及其反序表 Lr(4,6,9,8,5),它们各自的逆序数分别为:6 ((5, 4), ...
- Spring Quartz定时任务如何获得ServletContext对象?
servlet中可以得到ServletContext quartz调用servlet中的方法 完美解决了
- WPF 使用 Pandoc 把 Markdown 转 Docx
原文:WPF 使用 Pandoc 把 Markdown 转 Docx 本文告诉大家如何通过 WPF 使用 Pandoc 把 Markdown 转 Docx 文件 在之前有文章使用 Pandoc 把 M ...
- 斯托克斯定理(Stokes' theorem)
1. 几种形式 ∮∂SPdx+Qdy+Rdz=∬S∣∣∣∣∣∣cosα∂∂xPcosβ∂∂yQcosγ∂∂zR∣∣∣∣∣∣dS ∮∂Ωw=∬Ωdw 左边是内积: 右边是外积: 物理上的应用: ∮∂SE ...
- 向西项目管理工具Git一片
前言 Git 这个词相信大家并不陌生,做开发的童鞋们每天都离不开它.当然,假设你的项目中没实用到分布式,那么,你可能从未用过 Git,当然也可能没听过.只是,这不是重点,重点是这一篇文章,我们将一起谈 ...
- Windows搭建Eclipse+JDK+SDK的Android --安卓开发入门级
一 相关下载 (1) java JDK下载: 进入该网页: http://java.sun.com/javase/downloads/index.jsp (或者直接点击下载)例如以下图: 选择 ...
- WPF MVVM模式中,通过命令实现窗体拖动、跳转以及显隐控制
原文:WPF MVVM模式中,通过命令实现窗体拖动.跳转以及显隐控制 在WPF中使用MVVM模式,可以让我们的程序实现界面与功能的分离,方便开发,易于维护.但是,很多初学者会在使用MVVM的过程中遇到 ...
- python中的验证码识别库PyTesser
PyTesser PyTesser is an Optical Character Recognition module for Python. It takes as input an image ...
- 中英文对照 —— 互联网、IT(信息科技)、编程
1. 网站 web-portal:门户网站: 2. 工具与方法 crowdsourcing:众包, crowd ⇒ 众: 3. 软件 MVP:最小化可行产品,Minimum Viable Produc ...