Skip to content

Injectors

Volker Krause edited this page Jan 18, 2014 · 6 revisions

Injectors

This is an overview of the injection methods supported by GammaRay and their limitations. You can choose which one to use in the QtCreator settings or using the "-i" command line option.

LD_PRELOAD

  • Architecture: any (tested: x86, ARM)
  • Operating System: Linux, QNX
  • Limitations: Broken on some Ubuntu systems due to them building Qt the wrong way, see Known Issues.
  • Coverage: all QObjects, all connections
  • Injection time: startup
  • Performance: no impact
  • Note: default on Linux for startup injection

GDB/LLDB

  • Architecture: any (tested: x86)
  • Operating System: Linux, Mac OS X
  • Limitations: platform security needs to allow attaching to a process
  • Coverage: only QObjects attached to widgets and/or receiving QEvents at runtime, all connections made after attaching
  • Injection time: startup, runtime
  • Performance: poor during startup/attaching
  • Note: default on Linux/Mac for runtime attaching

Style

  • Architecture: any (tested: x86)
  • Operating System: any (tested Linux, Mac, Windows/MSVC)
  • Limitations: interference with custom styles, needs Qt style plugin support to be enabled
  • Coverage: only QObjects attached to widgets and/or receiving QEvents at runtime, all connections made after attaching
  • Injection time: startup
  • Performance: no impact
  • Note: only relies on Qt for injection, therefore a good fallback if any of the other injectors fail

WinDLL

  • Architecture: x86
  • Operating System: Windows
  • Limitations: MSVC only in GammaRay 1.0, MingW support added in GammaRay 1.1
  • Coverage: all QObjects created after injection (previously created objects are recovered if attached to new objects, widgets or when receiving events), all connections created after injection
  • Injection time: startup, runtime
  • Performance: no impact
  • Note: default on Windows

DyLib Inject

  • Architecture: x86
  • Operating System: Mac OS X
  • Limitations: see Known Issues regarding usage with app bundles
  • Coverage: all QObjects, all connections
  • Injection time: startup
  • Performance: no impact
  • Note: default on Mac
Clone this wiki locally