GammaRay源码编译mingw32版本运行文件
1,目标
GammaRay 是一个允许你查看 Qt 应用程序甚至在某种程度上修改它的独特应用,GammaRay 可以在运行时实时观察程序中的 qt 代码的行为和数据结构,可谓是 Debugger 的良好补充。
但是GammaRay的工作需要用和被调试程序使用同一个版本的qt和VS编译,否则GammaRay无法attach到被调试程序。
网上很难找到已编译好的exe版本,因此需要基于源代码,在具体的环境下编译出可用的运行文件。
本人经过实践,通过本文讲述GammaRay源代码如何在QT5.14和Cmake、MSVC 2015 32位版本下进行编译。
2,环境与条件
本人的电脑环境:windows10 64位
- cmake version 3.20.3
- QT版本:qt-opensource-windows-x86-5.14.2.exe
- VC版本:MSVC VC++2015
- GammaRay源代码:KDAB-GammaRay-v2.11.3-0-gf8e8373.zip
2.1 CMake安装
https://blog.csdn.net/GenuineMonster/article/details/120261628
从以上网站均能下载cmake-3.20.3-windows-x86_64.msi,然后安装。
2.2 QT安装
https://download.qt.io/archive/qt/5.14/5.14.2/qt-opensource-windows-x86-5.14.2.exe.mirrorlist
从上述链接,选取国内站点下载。
网络不好时,可以采用磁链下载。
https://blog.csdn.net/jk_rou/article/details/124782688
Qt5.14.2安装、配置及测试(Win10),参考上文。
以上是安装完成后的程序组。以下假设QT安装在C:\Qt\Qt5.14.2目录下。
安装完成后,将以下路径加入PATH环境变量:
C:\Qt\Qt5.14.2\5.14.2\mingw73_32\bin
2.3 MSVC安装
网上有大量 visualc++ build tools的安装文章,此处不再赘述。
以上是安装完成后的程序组。
2.4 GammaRay源代码下载
https://github.com/KDAB/GammaRay
从以上地址下载源码,并解压。
以下假设解压到:E:\0jackRef\GammaRay\KDAB-GammaRay-v2.11.3-0-gf8e8373
3,代码编译步骤
主要步骤为:
- CMake创建Makefile
- make目标exe文件
- install生成文件到发布目录
3.1 CMake
在源代码目录下建立子目录build-mingw32
E:\0jackRef\GammaRay\KDAB-GammaRay-v2.11.3-0-gf8e8373\KDAB-GammaRay-62bd4ed\build-mingw32
打开cmake-gui
指定源码路径和build路径,如下图:
先添加变量:cmake_make_program ,设置file类型,值为:
C:/Qt/Qt5.14.2/Tools/mingw730_32/bin/mingw32-make.exe
然后点击 congfigure按钮
再点击 Generate按钮
此时在build-mingw32目录下生成make所需的各种文件。
3.2 Make
打开:Visual C++ 2015 x86 Native Build Tools Command Prompt
在命令行,转入build-mingw32目录
输入mingw32-make,开始编译链接目标文件。
完成后,在E:\0jackRef\GammaRay\KDAB-GammaRay-v2.11.3-0-gf8e8373\KDAB-GammaRay-62bd4ed\build-mingw32\bin目录下,发现出现了编译完成后的运行文件:
3.3 Install
继续运行mingw32-make install
文件被安装到目标目录,如C:\Program Files (x86)\GammaRay\
至此,GammaRay的mingw32版本的运行文件编译完成。
4,测试运行
运行C:\Program Files (x86)\GammaRay\bin\gammaray-launcher.exe
再运行QT自带的sample程序addressbook.exe,注意先编译为mingw32版本。
发现gammaRay已经可以attach这个程序了。
点击Attach,进入跟踪界面。
可见,GammaRay确实能起到检视、操控目标程序的作用。
5,注意事项
- 各种指令或环境,均需采用32位版本。否则会出现QT库的链接问题。即:error LNK2019: unresolved external symbol
- 如果cmake-gui报错:cc1plus.exe程序无法正常启动(0xc000007b),请单击确定关闭应用程序。解决办法是,把 QT的bin目录(如C:\Qt\Qt5.14.2\5.14.2\mingw73_32\bin)加到环境变量path里面去。