Is there a way to see which signals are fired, and if there is a slot connected to them? Ideally, we'd like to see all signals, not just those of a particular class or method; e.g. QSignalSpy only allows us to track specific signals of specific instances.
In our application, we've seen performance problems because of a signal being emitted twice from different components. In the end, it turned out that there was a second instance of a class that should have only been there once. Knowing which signals are emitted exactly helps in debugging this.
Signals are called via QMetaObject::invoke*
, I was hoping to find something there to hook into, but I found nothing obvious.
(disclaimer, I work for KDAB) : KDAB's GammaRay tool can show you objects and connections at runtime, without requiring any source changes. It inspects the meta-object tables and does some code-injection hooks to make this work.