配置QtCreator+CDB遠程調試環境(要設置_NT_SYMBOL_PATH和QT_PLUGIN_PATH和Path)


相關環境信息:開發機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中加一句輸出當前系統版本號的語句

[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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM