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
------------------------------