• 配置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:"libqtcreatorcdbext32qtcreatorcdbext.dll"
    x64:"libqtcreatorcdbext64qtcreatorcdbext.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:DebugServerqtcreatorcdbext.dll
    D:QtQt5Cored.dll
    D:QtQt5Guid.dll
    D:QtQt5Guid.dll
    D:DebugServerQtpluginsplatformsqwindowsd.dll

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



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



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

    三、开始远程调试

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

    [cpp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. #include "mainwindow.h"  
    2. #include <QApplication>  
    3. #include <QSysInfo>  
    4. #include <QDebug>  
    5.   
    6. int main(int argc, char *argv[])  
    7. {  
    8.     QApplication a(argc, argv);  
    9.     MainWindow w;  
    10.     w.show();  
    11.   
    12.     qDebug() << QSysInfo::windowsVersion();  
    13.   
    14.     return a.exec();  
    15. }  


    生成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

  • 相关阅读:
    编译freeglut-3.0.0的Windows版静态库,及其使用示例
    关于网络安全与实名上网的通知
    【机器学习库】mlpack 2.1.1 Ubuntu14.0.4 踩坑记录
    【OpenCV】在Linux下用CMAKE编译安装OpenCV3.2.0
    【Python装饰者】在函数测试的作用
    【校验】TCP和UDP的校验和
    【C++设计模式】单件类与DCLP(Double Check Lock Pattern)的风险
    【爬虫】Python2 爬虫初学笔记
    【统计学习】SVM之超平面方程来源
    【滤波】标量Kalman滤波的过程分析和证明及C实现
  • 原文地址:https://www.cnblogs.com/findumars/p/6375555.html
Copyright © 2020-2023  润新知