<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.kde.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.6"
          urlbase="https://bugs.kde.org/"
          
          maintainer="sysadmin@kde.org"
>

    <bug>
          <bug_id>499752</bug_id>
          
          <creation_ts>2025-02-10 11:13:49 +0000</creation_ts>
          <short_desc>The debugger (gdb) cannot display values of instances of the MyMoneyMoney class</short_desc>
          <delta_ts>2025-02-15 09:02:06 +0000</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>2</classification_id>
          <classification>Applications</classification>
          <product>kmymoney</product>
          <component>buildsystem</component>
          <version>5.1.92</version>
          <rep_platform>Other</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>NOR</priority>
          <bug_severity>normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Ralf Habacker">ralf.habacker</reporter>
          <assigned_to name="KMyMoney Devel Mailing List">kmymoney-devel</assigned_to>
          
          
          <cf_commitlink>https://invent.kde.org/office/kmymoney/-/commit/cac6330c8062930452b06b552474c8c76b31caef</cf_commitlink>
          <cf_versionfixedin>5.2</cf_versionfixedin>
          <cf_sentryurl></cf_sentryurl>
          <votes>0</votes>

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2396386</commentid>
    <comment_count>0</comment_count>
    <who name="Ralf Habacker">ralf.habacker</who>
    <bug_when>2025-02-10 11:13:49 +0000</bug_when>
    <thetext>SUMMARY
The class MyMoneyMoney is an elementary class and is used very often in the source code. Since the contained value is hidden inside, it cannot be displayed directly in debuggers such as gdb, kdevelop or QtCreator, which makes debugging more difficult. Outputs must therefore be generated manually by adding debug outputs, e.g. with `qDebug() &lt;&lt; instance.toDouble()` or in the gdb window with `p instance.toDouble()`. It would speed up debugging if there is corresponding support for debuggers. 

STEPS TO REPRODUCE
1. build kmymoney from source (git master branch) with debug information included
2. run 
```
gdb &lt;builddir&gt;/bin/kmymoney
(gdb) b main
(gdb) r
(gdb) b MyMoneyMoney::One
```
3.  inspect debugger output

OBSERVED RESULT
The debugger displays a lot of data, but not the relevant value:
```
(gdb) p MyMoneyMoney::ONE
$1 = {&lt;AlkValue&gt; = {d = {d = 0x87f300}}, _vptr.MyMoneyMoney = 0x7ffff78b18c0 &lt;vtable for MyMoneyMoney+16&gt;, static maxValue = {&lt;AlkValue&gt; = {d = {d = 0x8807e0}}, 
    _vptr.MyMoneyMoney = 0x7ffff78b18c0 &lt;vtable for MyMoneyMoney+16&gt;, static maxValue = &lt;same as static member of an already seen type&gt;, static minValue = {&lt;AlkValue&gt; = {d = {d = 0x880810}}, 
      _vptr.MyMoneyMoney = 0x7ffff78b18c0 &lt;vtable for MyMoneyMoney+16&gt;, static maxValue = &lt;same as static member of an already seen type&gt;, 
      static minValue = &lt;same as static member of an already seen type&gt;, static autoCalc = {&lt;AlkValue&gt; = {d = {d = 0x8807b0}}, _vptr.MyMoneyMoney = 0x7ffff78b18c0 &lt;vtable for MyMoneyMoney+16&gt;, 
        static maxValue = &lt;same as static member of an already seen type&gt;, static minValue = &lt;same as static member of an already seen type&gt;, 
        static autoCalc = &lt;same as static member of an already seen type&gt;, static ONE = {&lt;AlkValue&gt; = {d = {d = 0x87f300}}, _vptr.MyMoneyMoney = 0x7ffff78b18c0 &lt;vtable for MyMoneyMoney+16&gt;, 
          static maxValue = &lt;same as static member of an already seen type&gt;, static minValue = &lt;same as static member of an already seen type&gt;, 
          static autoCalc = &lt;same as static member of an already seen type&gt;, static ONE = &lt;same as static member of an already seen type&gt;, static MINUS_ONE = {&lt;AlkValue&gt; = {d = {d = 0x87f3f0}}, 
            _vptr.MyMoneyMoney = 0x7ffff78b18c0 &lt;vtable for MyMoneyMoney+16&gt;, static maxValue = &lt;same as static member of an already seen type&gt;, 
            static minValue = &lt;same as static member of an already seen type&gt;, static autoCalc = &lt;same as static member of an already seen type&gt;, 
            static ONE = &lt;same as static member of an already seen type&gt;, static MINUS_ONE = &lt;same as static member of an already seen type&gt;}}, 
        static MINUS_ONE = &lt;same as static member of an already seen type&gt;}, static ONE = &lt;same as static member of an already seen type&gt;, 
      static MINUS_ONE = &lt;same as static member of an already seen type&gt;}, static autoCalc = &lt;same as static member of an already seen type&gt;, 
    static ONE = &lt;same as static member of an already seen type&gt;, static MINUS_ONE = &lt;same as static member of an already seen type&gt;}, 
  static minValue = &lt;same as static member of an already seen type&gt;, static autoCalc = &lt;same as static member of an already seen type&gt;, static ONE = &lt;same as static member of an already seen type&gt;, 
  static MINUS_ONE = &lt;same as static member of an already seen type&gt;}
```

EXPECTED RESULT
Instead, the debugger should display the value contained in the named instance
```
(gdb) p MyMoneyMoney::ONE
$1 = 1
```
SOFTWARE/OS VERSIONS
Operating System: openSUSE Leap 15.6
KDE Plasma Version: 5.27.11
KDE Frameworks Version: 5.115.0
Qt Version: 5.15.12</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2396387</commentid>
    <comment_count>1</comment_count>
    <who name="Ralf Habacker">ralf.habacker</who>
    <bug_when>2025-02-10 11:16:01 +0000</bug_when>
    <thetext>Git commit cac6330c8062930452b06b552474c8c76b31caef by Ralf Habacker.
Committed on 10/02/2025 at 11:15.
Pushed by habacker into branch &apos;master&apos;.

Add gdb pretty printer for MyMoneyMoney class

With Windows/gdb, &apos;set auto-load safe-path /&apos; must be used
before starting an executable file to activate the loading
of a pretty printer.

Gdb pretty printers work in kdevelop and the gdb window in
QtCreator with the &apos;p&apos; command, but currently not in the
symbol display due to a bug in the QtCreator gdb bridge
(https://bugreports.qt.io/browse/QTCREATORBUG-32480).
FIXED-IN:5.2

M  +6    -0    kmymoney/mymoney/CMakeLists.txt
A  +28   -0    kmymoney/mymoney/kmm_mymoney-gdb.py

https://invent.kde.org/office/kmymoney/-/commit/cac6330c8062930452b06b552474c8c76b31caef</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2397324</commentid>
    <comment_count>2</comment_count>
    <who name="Ralf Habacker">ralf.habacker</who>
    <bug_when>2025-02-12 22:18:39 +0000</bug_when>
    <thetext>(In reply to Ralf Habacker from comment #1)
...
&gt; Gdb pretty printers work in kdevelop and the gdb window in
&gt; QtCreator with the &apos;p&apos; command, but currently not in the
&gt; symbol display due to a bug in the QtCreator gdb bridge
&gt; (https://bugreports.qt.io/browse/QTCREATORBUG-32480).

A merge request has been opened at https://codereview.qt-project.org/c/qt-creator/qt-creator/+/624064 with a corresponding correction for QtCreator.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2397729</commentid>
    <comment_count>3</comment_count>
      <attachid>178319</attachid>
    <who name="Ralf Habacker">ralf.habacker</who>
    <bug_when>2025-02-13 21:05:21 +0000</bug_when>
    <thetext>Created attachment 178319
Patch fixing the issue

(In reply to Ralf Habacker from comment #2)
&gt; A merge request has been opened at
&gt; https://codereview.qt-project.org/c/qt-creator/qt-creator/+/624064 with a
&gt; corresponding correction for QtCreator.

A corresponding correction will be included in Qt Creator 16.0.0-rc1. For older versions, the patch has been appended to this ticket and can be applied to /usr/share/qtcreator/debugger/gdbbridge.py.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2398209</commentid>
    <comment_count>4</comment_count>
    <who name="Ralf Habacker">ralf.habacker</who>
    <bug_when>2025-02-15 09:02:06 +0000</bug_when>
    <thetext>Git commit ef21565070fa0325693ab579f9318eea341610e3 by Ralf Habacker.
Committed on 15/02/2025 at 08:57.
Pushed by habacker into branch &apos;master&apos;.

Add gdb pretty printer for MyMoneyPrice, MyMoneySecurity and MyMoneySplit classes

These pretty printers significantly improve the debugging capabilities of KMyMoney.

M  +118  -6    kmymoney/mymoney/kmm_mymoney-gdb.py

https://invent.kde.org/office/kmymoney/-/commit/ef21565070fa0325693ab579f9318eea341610e3</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>178319</attachid>
            <date>2025-02-13 21:05:21 +0000</date>
            <delta_ts>2025-02-13 21:05:21 +0000</delta_ts>
            <desc>Patch fixing the issue</desc>
            <filename>0001-Debugger-Fix-custom-GDB-pretty-printers.patch</filename>
            <type>text/plain</type>
            <size>1540</size>
            <attacher name="Ralf Habacker">ralf.habacker</attacher>
            
              <data encoding="base64">RnJvbSBjNjdhOGQ1MThkYjdiMzM5M2ZhYTcxNDJiNTViMjdhM2RjYmQzNWQ1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyaWkgU2Vta2l2IDxhbmRyaWkuc2Vta2l2QHF0LmlvPgpE
YXRlOiBXZWQsIDEyIEZlYiAyMDI1IDE2OjE4OjQyICswMTAwClN1YmplY3Q6IFtQQVRDSF0gRGVi
dWdnZXI6IEZpeCBjdXN0b20gR0RCIHByZXR0eSBwcmludGVycwoKQSBHREIgcHJldHR5IHByaW50
ZXIncyB0b19zdHJpbmcgbWV0aG9kIGNhbiByZXR1cm4gYSBwbGFpbiBzdHJpbmcKYXMgd2VsbCBh
cyBhIFZhbHVlIG9iamVjdC4gV2UgZGlkIG5vdCBhY2NvdW50IGZvciB0aGUgbGF0dGVyLgoKRml4
ZXM6IFFUQ1JFQVRPUkJVRy0zMjQ4MApDaGFuZ2UtSWQ6IEkzNDI5YzMwYTAyMmExYzgxMGU2Nzdh
NTY3ZTJkMmFiYTU5YzIyYTc5Ci0tLQogc2hhcmUvcXRjcmVhdG9yL2RlYnVnZ2VyL2dkYmJyaWRn
ZS5weSB8IDkgKysrKysrLS0tCiAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAzIGRl
bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NoYXJlL3F0Y3JlYXRvci9kZWJ1Z2dlci9nZGJicmlk
Z2UucHkgYi9zaGFyZS9xdGNyZWF0b3IvZGVidWdnZXIvZ2RiYnJpZGdlLnB5CmluZGV4IGE3ODE4
NjVhNDExLi44M2QyNmM0ZTI4ZiAxMDA2NDQKLS0tIGEvc2hhcmUvcXRjcmVhdG9yL2RlYnVnZ2Vy
L2dkYmJyaWRnZS5weQorKysgYi9zaGFyZS9xdGNyZWF0b3IvZGVidWdnZXIvZ2RiYnJpZGdlLnB5
CkBAIC0xMzUsOSArMTM1LDEyIEBAIGNsYXNzIFBsYWluRHVtcGVyKCk6CiAgICAgICAgIGlmIGlz
aW5zdGFuY2UodmFsLCBzdHIpOgogICAgICAgICAgICAgIyBlbmNvZGUgYW5kIGF2b2lkIGV4dHJh
IHF1b3RlcyAoJyInKSBhdCBiZWdpbm5pbmcgYW5kIGVuZAogICAgICAgICAgICAgZC5wdXRWYWx1
ZShkLmhleGVuY29kZSh2YWwpLCAndXRmODoxOjAnKQotICAgICAgICBlbGlmIHZhbCBpcyBub3Qg
Tm9uZTogICMgQXNzdW1pbmcgTGF6eVN0cmluZwotICAgICAgICAgICAgZC5wdXRDaGFyQXJyYXlW
YWx1ZSh2YWwuYWRkcmVzcywgdmFsLmxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdmFsLnR5cGUudGFyZ2V0KCkuc2l6ZW9mKQorICAgICAgICAjIEl0IG1pZ2h0IGFzIHdl
bGwgYmUganVzdCBhbm90aGVyIGdkYi5WYWx1ZSwgc2VlCisgICAgICAgICMgaHR0cHM6Ly9zb3Vy
Y2V3YXJlLm9yZy9nZGIvY3VycmVudC9vbmxpbmVkb2NzL2dkYi5odG1sL1ByZXR0eS1QcmludGlu
Zy1BUEkuaHRtbCM6fjp0ZXh0PUZ1bmN0aW9uJTNBJTIwcHJldHR5X3ByaW50ZXIudG9fc3RyaW5n
JTIwKHNlbGYpCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZSh2YWwsIGdkYi5WYWx1ZSk6CisgICAg
ICAgICAgICBkLnB1dEl0ZW0oZC5mcm9tTmF0aXZlVmFsdWUodmFsKSkKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIGxpc3RlciA9IGdldGF0dHIocHJpbnRlciwg
J2NoaWxkcmVuJywgTm9uZSkKICAgICAgICAgaWYgbGlzdGVyIGlzIE5vbmU6Ci0tIAoyLjQzLjAK
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>