AIX

AIX

Connect with fellow AIX users and experts to gain knowledge, share insights, and solve problems.


#Power
#Power
 View Only

LLDB 22.0.0 - examining a long char-string variable does not work

  • 1.  LLDB 22.0.0 - examining a long char-string variable does not work

    Posted an hour ago

    Hi,

    Printing a long char-string does not work. Only when setting the target.max-string-summary-length option less than the string length it prints the variable content but of course only up to set max-string-summary-length.

    Setup:

    # cat test.C
    #include <stdio.h>
    #include <stdlib.h>

    #define len 513

    int main(int argc, char **argv)
    {
      char text[len];
      memset(text, 'a', len-1);
      text[len-1]='\0';
      printf("%s\n", text);
    }

    # lldb -version
    lldb version 22.0.0git (https://github.com/Dhruv-Srivastava-IBM/lldb-for-aix.git revision 17055ab537d7673e7640d0bd993c5ad1c64fe938)
      clang revision 17055ab537d7673e7640d0bd993c5ad1c64fe938
      llvm revision 17055ab537d7673e7640d0bd993c5ad1c64fe938

    # ibm-clang++_r --version
    IBM Open XL C/C++ for AIX 17.1.3 (5725-C72, 5765-J18), version 17.1.3.4, clang version 19.1.7 (build 6bae9d6 6bae9d66cbb9ef85ebf0ee3fc7116ba937736e06)
    Target: powerpc-ibm-aix7.2.0.0
    Thread model: posix
    InstalledDir: /opt/IBM/openxlC/17.1.3/bin
    Build config: +assertions

    # ibm-clang++_r -g test.C

    The problem:

    # /opt/lldb/bin/lldb test
    (lldb) target create "test"
    Current executable set to '/sources/er/lldb/test' (powerpc64).
    (lldb) b main
    Breakpoint 1: where = test`main + 44 at test.C:9, address = 0x000000001000074c
    (lldb) settings show target.max-string-summary-length
    target.max-string-summary-length (unsigned) = 1024
    (lldb) r
    Process 11731592 launched: '/sources/er/lldb/test' (powerpc64)
    Process 11731592 stopped
    * thread #1, name = 'test', stop reason = breakpoint 1.1
        frame #0: 0x000000001000074c test`main(argc=1, argv=0x2ff22a7000000001) at test.C:9
       6     int main(int argc, char **argv)
       7     {
       8       char text[len];
    -> 9       memset(text, 'a', len-1);
       10      text[len-1]='\0';
       11      printf("%s\n", text);
       12    }
    (lldb) n
    Process 11731592 stopped
    * thread #1, name = 'test', stop reason = step over
        frame #0: 0x0000000010000760 test`main(argc=1, argv=0x2ff22a7000000001) at test.C:10
       7     {
       8       char text[len];
       9       memset(text, 'a', len-1);
    -> 10      text[len-1]='\0';
       11      printf("%s\n", text);
       12    }
    (lldb) n
    Process 11731592 stopped
    * thread #1, name = 'test', stop reason = step over
        frame #0: 0x0000000010000764 test`main(argc=1, argv=0x2ff22a7000000001) at test.C:11
       8       char text[len];
       9       memset(text, 'a', len-1);
       10      text[len-1]='\0';
    -> 11      printf("%s\n", text);
       12    }
    (lldb) p text
    (char[513]) ""
    (lldb) settings set target.max-string-summary-length 513
    (lldb) p text
    (char[513]) ""
    (lldb) settings set target.max-string-summary-length 512
    (lldb) p text
    (char[513]) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"...
    (lldb) settings set target.max-string-summary-length 1024
    (lldb) p text
    (char[513]) ""
    (lldb) q
    Quitting LLDB will kill one or more processes. Do you really want to proceed: [Y/n]

    Regards,



    ------------------------------
    Emanuel Reisinger
    Axians ICT Austria GmbH
    ------------------------------