<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-IN" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal">Hello all,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">While debugging and printing struct with multi-dimensional char array, gdb successfully prints string while lldb bails out with only printing address.
<o:p></o:p></p>
<p class="MsoNormal">For simple C testcase,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><i>struct b {<o:p></o:p></i></p>
<p class="MsoNormal"><i>        char i[2][4];<o:p></o:p></i></p>
<p class="MsoNormal"><i>};<o:p></o:p></i></p>
<p class="MsoNormal"><i><o:p> </o:p></i></p>
<p class="MsoNormal"><i>int main() {<o:p></o:p></i></p>
<p class="MsoNormal"><i>        struct b z;<o:p></o:p></i></p>
<p class="MsoNormal"><i>        z.i[0][0] = 'F';<o:p></o:p></i></p>
<p class="MsoNormal"><i>        z.i[0][1] = 'O';<o:p></o:p></i></p>
<p class="MsoNormal"><i>        z.i[0][2] = 'O';<o:p></o:p></i></p>
<p class="MsoNormal"><i>        z.i[0][3] = 0;<o:p></o:p></i></p>
<p class="MsoNormal"><i>        z.i[1][0] = 'B';<o:p></o:p></i></p>
<p class="MsoNormal"><i>        z.i[1][1] = 'A';<o:p></o:p></i></p>
<p class="MsoNormal"><i>        z.i[1][2] = 'R';<o:p></o:p></i></p>
<p class="MsoNormal"><i>        z.i[1][3] = 0;<o:p></o:p></i></p>
<p class="MsoNormal"><i>        return 0;<o:p></o:p></i></p>
<p class="MsoNormal"><i>}<o:p></o:p></i></p>
<p class="MsoNormal"><i><o:p> </o:p></i></p>
<p class="MsoNormal">On gdb,<o:p></o:p></p>
<p class="MsoNormal">Reading symbols from /home/chirag/a.out...done.<o:p></o:p></p>
<p class="MsoNormal">(gdb) l<o:p></o:p></p>
<p class="MsoNormal">1       struct b {<o:p></o:p></p>
<p class="MsoNormal">2               char i[2][4];<o:p></o:p></p>
<p class="MsoNormal">3       };<o:p></o:p></p>
<p class="MsoNormal">4<o:p></o:p></p>
<p class="MsoNormal">5       int main() {<o:p></o:p></p>
<p class="MsoNormal">6               struct b z;<o:p></o:p></p>
<p class="MsoNormal">7               z.i[0][0] = 'F';<o:p></o:p></p>
<p class="MsoNormal">8               z.i[0][1] = 'O';<o:p></o:p></p>
<p class="MsoNormal">9               z.i[0][2] = 'O';<o:p></o:p></p>
<p class="MsoNormal">10              z.i[0][3] = 0;<o:p></o:p></p>
<p class="MsoNormal">(gdb) l<o:p></o:p></p>
<p class="MsoNormal">11              z.i[1][0] = 'B';<o:p></o:p></p>
<p class="MsoNormal">12              z.i[1][1] = 'A';<o:p></o:p></p>
<p class="MsoNormal">13              z.i[1][2] = 'R';<o:p></o:p></p>
<p class="MsoNormal">14              z.i[1][3] = 0;<o:p></o:p></p>
<p class="MsoNormal">15              return 0;<o:p></o:p></p>
<p class="MsoNormal">16      }<o:p></o:p></p>
<p class="MsoNormal">(gdb) b 15<o:p></o:p></p>
<p class="MsoNormal">Breakpoint 1 at 0x400511: file Desktop/test/struct.c, line 15.<o:p></o:p></p>
<p class="MsoNormal">(gdb) r<o:p></o:p></p>
<p class="MsoNormal">Starting program: /home/chirag/./a.out<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Breakpoint 1, main () at Desktop/test/struct.c:15<o:p></o:p></p>
<p class="MsoNormal">15              return 0;<o:p></o:p></p>
<p class="MsoNormal">Missing separate debuginfos, use: debuginfo-install glibc-2.17-307.el7.1.x86_64<o:p></o:p></p>
<p class="MsoNormal">(gdb) p z<o:p></o:p></p>
<p class="MsoNormal"><span style="color:red">$1 = {i = {"FOO", "BAR"}}<o:p></o:p></span></p>
<p class="MsoNormal">(gdb) q<o:p></o:p></p>
<p class="MsoNormal">A debugging session is active.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">While on lldb 11.0.0-rc2, (lldb) target create "/home/chirag/a.out"<o:p></o:p></p>
<p class="MsoNormal">Current executable set to '/home/chirag/a.out' (x86_64).<o:p></o:p></p>
<p class="MsoNormal">(lldb) b 15<o:p></o:p></p>
<p class="MsoNormal">Breakpoint 1: where = a.out`main + 36 at struct.c:15, address = 0x0000000000400511<o:p></o:p></p>
<p class="MsoNormal">(lldb) r<o:p></o:p></p>
<p class="MsoNormal">Process 57100 launched: '/home/chirag/a.out' (x86_64)<o:p></o:p></p>
<p class="MsoNormal">Process 57100 stopped<o:p></o:p></p>
<p class="MsoNormal">* thread #1, name = 'a.out', stop reason = breakpoint 1.1<o:p></o:p></p>
<p class="MsoNormal">    frame #0: 0x0000000000400511 a.out`main at struct.c:15<o:p></o:p></p>
<p class="MsoNormal">   12           z.i[1][1] = 'A';<o:p></o:p></p>
<p class="MsoNormal">   13           z.i[1][2] = 'R';<o:p></o:p></p>
<p class="MsoNormal">   14           z.i[1][3] = 0;<o:p></o:p></p>
<p class="MsoNormal">-> 15           return 0;<o:p></o:p></p>
<p class="MsoNormal">   16   }<o:p></o:p></p>
<p class="MsoNormal">(lldb) p z<o:p></o:p></p>
<p class="MsoNormal"><span style="color:red">(b) $0 = (i = char [2][4] @ 0x0000000001fe3ca0)<o:p></o:p></span></p>
<p class="MsoNormal">(lldb) q<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">It seems like the type summary formatter is failing? Or is it the intended behaviour?.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks and Regards,<o:p></o:p></p>
<p class="MsoNormal">Chirag Patel.<o:p></o:p></p>
</div>
</body>
</html>