windows 下使用 mingw編譯器 調試時 無法跟進源碼


windows 下使用 mingw編譯器 調試時 無法跟進源碼

最近在公司使用QT 開發,官方在線下載的 安裝的QT mingw 都是沒有debug版本的 由於沒有debug版本動態庫

所以你調試的時候壓根就無法跟進QT源代碼里,那么找問題的時候 大部分都是跟到匯編代碼了。

由於剛來公司不久,人微言輕。我建議統一使用msvc編譯 得到拒絕后 沒有辦法只能重新編譯mingw debug版本 了。

下面記錄下使用mingw 編譯debug 版本步驟

1、 首先准備環境要做好

Perl version 5.12 
Python version 2.7 
Ruby version 1.9.3

這些東西要先安裝好

請自行百度 安裝

2、QT環境已經安裝好了

打開QT5.15.2(Mingw8.1.0 64-bit) 命令行工具

image-20210919150924727

3、在命令行工具中 切換到 你QT安裝的目錄\版本號\src

執行如下代碼

configure -debug -platform win32-g++ -opensource -confirm-license -opengl desktop -prefix "你的qt安裝目錄/qt版本號"

4、開始構建

mingw32-make
可能會報如下錯誤
 cannot find -lpnp_basictoolsd
collect2.exe: error: ld returned 1 exit status
你QT安裝的目錄\版本\Src\qtbase\examples\widgets\tools\plugandpaint 下的 pro 文件 編譯一個 debug 版本

繼續編譯

mingw32-make

繼續報錯 接着解決

C:\Users\HotPixel-2\AppData\Local\Microsoft\WindowsApps\python.exe D:/Qt/5.15.2/Src/qtdeclarative/src/3rdparty/masm/yarr/create_regex_tables > .generated\debug\RegExpJitTables.h
mingw32-make[4]: *** [Makefile.Debug:1059: .generated/debug/RegExpJitTables.h] Error 9009

找到RegExpJitTables.h 生成的所在目錄 自己手動執行

python.exe D:/Qt/5.15.2/Src/qtdeclarative/src/3rdparty/masm/yarr/create_regex_tables > RegExpJitTables.h

繼續編譯

mingw32-make

5、如果構建過程沒有錯誤執行 安裝命令即可

mingw32-make install

6、安裝完以后 執行aaa 命令時 設置的-prefix參數的目錄下 會多出這些文件夾

image-20210920112221729

將這些文件夾 復制到 你QT 安裝目錄/版本號/ 目錄下新建一個 mingw84_64_debug 文件夾

如下圖目錄結構

image-20210920112544206

7、打開QT creator 菜單 - 工具-選項-kits

添加你編譯好的這個mingw 64 debug 版本環境

image-20210920112839800

這個時候在選中 Kits 下的 Kits 項 clone 一份 mingw64 默認的 改下名稱 和 QT版本

image-20210920113010794

到此即可使用mingw 編譯器 完美調試 跟進QT 源代碼 定位問題了

  • 打開你的項目 選擇你新增加的 mingw 64 debug 版本的環境

    image-20210920113709788

  • 看看效果

    原來這段線程池的start 函數我 按F11 是怎么也進不去的

    image-20210920113352373

    現在按下F11完美進入

    image-20210920113423464

    當然QT 需要設置調試源碼的路徑步驟也不能少

    image-20210920113522130

參考文章如下:

https://doc-snapshots.qt.io/qt5-5.15/windows-building.html


免責聲明!

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



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