On 8/8/24 07:34, Magno Lomardo wrote:
Hi!

Would be possible to put this info into the docs, if it isn't already there?

I believe this is really important and deserves a spotlight on the docs.
Thoughts on that?
Yes please! I've searched through the docs for exactly these details in the past. Specifically what is needed: `find_package( KF5 Crash )`, `target_link_libraries( <target> KF5::Crash )`, and `KCrash::initialize()` after AboutData along with which parts of AboutData matter. A lot of "best practices" are missing, and using other applications as examples can be flaky because they may be way out of date too.

Thanks,
-Amber

Regards,
Magno Lomardo


On Thu, Aug 8, 2024 at 11:24 AM Nicolas Fella <nicolas.fe...@gmx.de <mailto:nicolas.fe...@gmx.de>> wrote:

    Hi,

    TL;DR: Call KCrash::initialize() after setting up KAboutData

    crash reporting via DrKonqi to Bugzilla and Sentry is powered by the
    KCrash framework, which acts as the crash handler inside the
    application.

    To install the crash handler you need to call KCrash::initialize() in
    your application's main function. Since the crash handler relies on
    information from KAboutData you should do it after the call to
    KAboutData::setApplicationData(). For best results make sure to include
    the application version in the about data.

    You can verify that it is working correctly by doing "killall -SEGV
    myapp" and checking that DrKonqi appears and lets you submit a report.

    Why am I sending this now? Some background:

    In KF5 linking against KF5::Crash would automatically install the crash
    handler for your application even without the explicity
    KCrash::initalize(). This approach had some caveats:

    - It doesn't work when linking with -as-needed, which is the default in
    some distributions

    - Similarly it won't work with static builds

    - It can result in the crash handler being installed for non-KDE apps
    that happen to load KF5::Crash, e.g. via out platform plugins

    For these reasons for KF6 we dropped this approach (see
    https://invent.kde.org/frameworks/kcrash/-/merge_requests/51
    <https://invent.kde.org/frameworks/kcrash/-/merge_requests/51>), meaning
    one must explicitly opt into our crash handling. A large number of our
    applications does that already, but there's also a significant number
    that doesn't. Please check your applications for that.

    Cheers

    Nico


--
Attached is my PGP public key.
Primary key fingerprint: 4407 5FB3 3665 0970 3B75 CD31 7DA1 7F4D AC46 7943

If you have a PGP key (and a minute to spare)
please send it in reply to this email.

If you have no idea what PGP is, feel free
to ignore all this gobbledegook.

Attachment: OpenPGP_0x7DA17F4DAC467943.asc
Description: OpenPGP public key

Attachment: OpenPGP_signature.asc
Description: OpenPGP digital signature

Reply via email to