=head1 NAME

GammaRay - Qt-application inspection and manipulation tool.

=head1 SYNOPSIS

gammaray [--pid <pid> | <application> <args> | --connect <host>[:<port>]


=head1 DESCRIPTION

GammaRay inspects runtime internals of a Qt-application, such as:
    Object tree, properties, signal/slots, widgets, models,
    graphics views, javascript debugger, resources,
    state machines, meta types, fonts, codecs, text documents

When run without any options, gammaray will present a list of running
Qt-applications from which you can attach the selected injector.
Else, you can attach to a running process by specifying its pid,
or you can start a new Qt-application by specifying its name
(and optional arguments).

=head1 OPTIONS

=over 4

=item B<--help>

Print help message and exit.

=item B<--version>

Print version information and exit.

=item B<-p, --pid <pid>>

Attach to running Qt application with the specified pid.

=item B<-i, --injector <injector>>

Set the specified injection type.

Supported injectors are:
     preload (Linux, Mac OS)
     gdb (Linux. requires gdb to be installed)
     lldb (Linux. Mac OS, requires lldb to be installed)
     style
     windll (Windows)

=item B<--inprocess>

Use the Gammaray 1.x in-process UI. This is not necessary in most cases,
apart from using tools that do not work remotely.

=item B<--inject-only>

This will only inject the GammaRay probe into a process, but not start
the GammaRay UI. This is useful for example when doing remote debugging
on embedded devices.

=item B<--listen <address>>

Specify on which network address the GammaRay server should listen,
default is GAMMARAY_DEFAULT_ANY_TCP_URL (ie. tcp://0.0.0.0, all of ipv4,
use tcp://[::] for all ipv6). This can be used for example on Windows to
avoid firewall warnings by setting the address to 127.0.0.1 if you don't
need remote access.

=item B<--no-listen>

Disables the GammaRay server. This implies --inprocess as there is no
other way to connect to the GammaRay probe in this case.

=item B<--list-probes>

List all installed probes.

=item B<--probe <abi>>

Explicitly specify which probe to use. You should use this if you have
more than one probe installed (e.g. one for Qt4 and one for Qt5), until
probe ABI auto-detection is implemented.

=item B<--connect <host>[:port]>

Connect to a target with an already injected GammaRay probe. Useful for
example for remote debugging.

=item B<--self-test [injector]>

Run GammaRay self-tests, if an injector is specified only that specific
one will be tested.

The exit code is 0 on success, and 1 otherwise.

=back

=head1 EXAMPLES

=over 4

=item Run gammaray on the Qt-application C<qtfoo> with command line arguments
'arg1' and 'arg2':

 % gammaray /path/to/qtfoo arg1 arg2

=item Invoke gammaray on the Qt-application running with pid 1234:

 % gammaray --pid 1234

=item Invoke gammaray on with injector gdb on Qt-application running with pid 1234:

 % gammaray --injector gdb --pid 1234

=back

=head1 EXIT STATUS

Exits with 0 under normal operation; otherwise, exists with a positive integer
indicating a problem occurred while launching or attaching an injector.

=head1 COPYRIGHT

Copyright (C) 2010-2023 Klaralvdalens Datakonsult AB, a KDAB Group company, <info@kdab.com>

Licensees holding valid commercial KDAB GammaRay licenses may use this file in
accordance with GammaRay Commercial License Agreement provided with the Software.

Contact info@kdab.com if any conditions of this licensing are not clear to you.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.

StackWalker code Copyright (c) 2005-2019, Jochen Kalmbach, All rights reserved.

lz4 fast LZ compression code Copyright (C) 2011-2020, Yann Collet, All rights reserved.

backward-cpp code Copyright 2013-2017 Google Inc. All rights reserved.

=head1 AUTHORS

 Allen Winter <allen.winter@kdab.com>
 Andreas Holzammer <andreas.holzammer@kdab.com>
 Anton Kreuzkamp <anton.kreuzkamp@kdab.com>
 BogDan Vatra <bogdan.vatra@kdab.com>
 Dan Vratil <dvratil@redhat.com>
 David Faure <david.faure@kdab.com>
 Filipe Azevedo <filipe.azevedo@kdab.com>
 Frank Osterfeld <frank.osterfeld@kdab.com>
 James Turner <james.turner@kdab.com>
 Jan Dalheimer <jan.dalheimer@kdab.com>
 Kevin Funk <kevin.funk@kdab.com>
 Laurent Montel <laurent.montel@kdab.com>
 Mathias Hasselmann <mathias.hasselmann@kdab.com>
 Milian Wolff <milian.wolff@kdab.com>
 Nicolas Arnaud-Cormos <nicolas.arnaud-cormos@kdab.com>
 Patrick Spendrin <patrick.spendrin@kdab.com>
 Peter Kuemmel <syntheticpp@gmx.net>
 Rafael Roquetto <rafael.roquetto@kdab.com>
 Sergio Martins <sergio.martins@kdab.com>
 Stephen Kelly <stephen.kelly@kdab.com>
 Thomas McGuire <thomas.mcguire@kdab.com>
 Till Adam <till.adam@kdab.com>
 Tobias Koenig <tobias.koenig@kdab.com>
 Volker Krause <volker.krause@kdab.com>

=cut
