Qt界面程序调试利器:Gammaray介绍

简介
GammaRay是KDAB开发的用于Qt应用程序的软件自检工具。利用QObject自省机制,可以在运行的过程当中去注入qt应用程序,实时观察QObject相关的各种属性.可以用于解决一些UI上的疑难杂症

github页面:https://github.com/KDAB/GammaRay

浏览带有实时更新的QObject树。
查看和编辑对象属性。
查看和调用QObject的插槽,并监视其信号。
列出所有QObject入站和出站信号/插槽连接。
为QWidget和QtQuick2应用程序提供布局信息覆盖。
检查用于绘制特定窗口小部件的所有QPainter操作。
浏览QtQuick2项目树和场景图。
检查QtQuick2项目的着色器和几何数据。
绘制对象寿命和发出的信号。
浏览QAbstractProxyModel层次结构,并检查代理模型链中的中间结果。
视觉实时检查QStateMachines。
浏览任何QGraphicsView场景的项目树。
显示QGraphicsView项的实时预览,包括显示其坐标系,变换原点,旋转/缩放/平移等。
拦截翻译并在运行时进行更改。
检查QStyle的所有构建块。
显示所有QTimers及其统计信息(唤醒次数,唤醒时间等)
浏览所有QTextDocument,以及编辑它们并查看其内部结构的功能。
充当完整的JavaScript调试器,可附加到任何QScriptEngine(包括QtQuick1内部使用的通常不可访问的调试器)。
借助QWebInspector,可以在任何QWebPage上执行HTML / CSS / DOM / JS内省/编辑/分析。
浏览QResource树及其内容。
显示所有注册的Meta类型。
显示所有程序中已加载的字体。
显示所有可用的编解码器。
注意问题
不稳定,大型复杂工程里用容易卡死
需要用和被调试程序同一个版本的qt和VS编译
主要功能
1.Widgets模块:


可以查看UI元素的层级关系,是否有一些控件/窗体层级关系错误
一些Qt原生控件的子控件,由于被DLL封装了没有暴露出来,在外部无法通过代码修改,可以用这个工具找出来,拿到类名,objectname后,通过样式表来控制其属性(邪教)
可以查看窗体布局,可以看到一些肉眼难以看出的问题,如一些透明的控件,或者margin,边框等内容是否符合预期
树形视图和可视化界面联动,同时会在被注入的进程上把当前选中控件的边界范围等标记出来

查看对应UI控件的属性,部分属性可以直接修改,立即生效并看到效果 
查看对应UI控件的方法,必须是在元对象系统里注册了的,如信号和槽,或声明为invokeable的函数

查看对应UI控件的信号槽连接(分为内部和外部)

可以查看UI控件的Paint绘制过程,包括绘制步骤,耗时,可以对一些性能问题进行针对性优化

查看并修改对应的QWidget窗体属性
 

Actions模块
查看当前注册了的所有QAction,对于隐藏了的也可以看到,可以直接双击强制将其激活

Events模块
分别以时间轴方式或者统计方式展示了当前系统中激活的所有Qevent对象,并给出其携带参数

Signals
以时间轴方式查看当前整个进程中所有信号的激发状态

Timer
可以查看系统中当前存在和曾经存在的QTimer计时器,查看激发的次数和时间,是否已经失效

FontBrowser
查看并预览当前程序中可以访问到的所有字体和预览

GraphicsScenes
图形视图框架调试程序,以树形展示QGraphicsScene场景中的所有元素,同样给出item的属性值和绘制过程,方便调试优化一些耗时的绘制,另外有对坐标轴的换算等方便调试的功能

Locales本地化
对于国际化内容,显示所有QLocalse对应的时间格式,星期格式,金额格式等等

MetaObjects
显示当前系统中所有MetaObjects,对于UI上的内存泄露查找特别有用,可以看到每个QObject对象的累计实例化数量,当前存活数量,子类实例化数量,子类存活数量等信息

MetaType
显示当前系统中所有MetaType,每个类型对应的ID,占用内存,对应MetaObject,类型属性等

Models
查看当前系统中存在的所有数据模型,包括代理模型,实时查看每个模型每个单元格的各个role值

Objects
查看所有QObject(与界面无关的也显示),同样可以查看Porperties,方法,连接,attributes

Problems
一些潜在问题查找,包括信号槽绑定循环,无效连接,无效线程,快捷键冲突等。

Resources
一些资源文件,包括系统自带的和工程自己添加的。

Styles
各个QStyles的贴图资源,描边风格等。一般用样式表,所以这个模块很少用

System
程序中的系统变量,路径等

TextDocument
QtextDocument的树形表示
————————————————
版权声明:本文为CSDN博主「油腻中年欢乐多」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiaosongaa/article/details/106823460

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值