[dylan] LLDB integration

Bruce Mitchener <[email protected]> Wed, 25 Jun 2014 00:08:42 +0700
Newsgroups gmane.comp.lang.dylan.gwydion.devel
Message-ID <CA+esKjPoh4+idiNQRtH=bZZ2GqMjxZMtyTzbXMo+cbbq2oYKXA@mail.gmail.com>
--===============0262042479==
Content-Type: multipart/alternative; boundary=f46d043c8046074ab204fc9803c9

--f46d043c8046074ab204fc9803c9
Content-Type: text/plain; charset=UTF-8

As some of you know, I've been working on providing support for Dylan when
debugging with LLDB using the LLDB Python API.

As a sneak peak at what is possible, check out the display of local
variables & arguments with their slots to a depth of 2 below.

This and more is coming soon to Open Dylan's master branch ...

 - Bruce

(lldb) frame variable -D 2
(dylan_value) mepargs_ = 0xbfffd4d0 {<simple-object-vector>: size: 2} {
  [0] = 0x00000009 {<integer>: 2}
  [1] = 0x02862eb0 {<byte-char-file-stream>} {
    [outer-stream] = 0x02862eb0 {<byte-char-file-stream>}
    [private-stream-element-type-value] = 0x001884d8 {<class>}
    [private-stream-direction-value] = 0x00000005 {<integer>: 1}
    [private-stream-lock-value] = 0x00188374 {<boolean>: False}
    [sequence-type] = 0x028b6000 {<buffer>}
    [to-element-mapper] = 0x00188374 {<boolean>: False}
    [from-element-mapper] = 0x028b6000 {<buffer>}
    [to-sequence-mapper] = 0x00000001 {<integer>: 0}
    [from-sequence-mapper] = 0x00000001 {<integer>: 0}
    [initial-position] = 0x00000001 {<integer>: 0}
    [current-position] = 0x00000001 {<integer>: 0}
    [final-position] = 0x028a0260 {<native-file-accessor>}
    [actual-stream-input-buffer] = 0x001889b8 {<class>}
    [actual-stream-output-buffer] = 0x00544400 {<simple-method>}
    [stream-shared-buffer] = 0x00544414 {<simple-method>}
    [stream-locator] = 0x0054af98 {<simple-closure-method>}
    [accessor] = 0x0054afb0 {<simple-closure-method>}
  }
}
(dylan_value) e_ = 0x0018a284 {<absent-engine-node>} {
  [properties] = 0x00000001 {<integer>: 0}
  [engine-node-callback] = 0x0003a200 {}
  [engine-node-entry-point] = 0x001620d0 {}
}
(dylan_value) parent_ = 0x00547ac4 {<incremental-generic-function>:
read-line} {
  [xep] = 0x00161340 {}
  [function-signature] = 0x00547cf4 {<keyword-signature+values>} {
    [signature-properties] = 0x02040805 {<integer>: 8454657}
    [signature-required] = 0x00548150 {<simple-object-vector>: size: 1}
    [signature-keys] = 0x005480c4 {<simple-object-vector>: size: 1}
    [signature-key-types] = 0x00188e18 {<simple-object-vector>: size: 256}
    [signature-values] = 0x005482b0 {<simple-object-vector>: size: 2}
  }
  [%gf-cache] = 0x00000001 {<integer>: 0}
  [debug-name] = 0x005482dc {<byte-string>: size: 9, data: read-line} {
    [string-element] = 0x00000025 {<integer>: 9}
  }
  [generic-function-methods] = 0x00547d0c {<pair>} {
    [head] = 0x005467bc {<keyword-method>}
    [tail] = 0x005482f0 {<pair>}
  }
  [discriminator] = 0x02aebbe0 {<monomorphic-by-class-discriminator>} {
    [properties] = 0x010100a9 {<integer>: 4210730}
    [engine-node-callback] = 0x0018b918 {<unbound>}
    [engine-node-entry-point] = 0x00166080 {}
    [monomorphic-by-class-discriminator-key] = 0x0054ac1d {<integer>:
1387271}
    [monomorphic-by-class-discriminator-next] = 0x02aebc00
{<implicit-keyed-single-method-engine-node>}
  }
  [incremental-gf-module] = 0x0053fba0 {<module>} {
    [namespace-name] = 0x0053fbf4 {<byte-string>: size: 7, data: streams}
    [home-library] = 0x0053fbb0 {<library>}
  }
  [incremental-gf-domain-info] = 0x00188374 {<boolean>: False}
  [incremental-gf-method-libraries] = 0x00188394 {<simple-object-vector>:
size: 0}
  [incremental-gf-properties] = 0x00000019 {<integer>: 6}
}
(dylan_value) T3 = 0x00000000 {}

--f46d043c8046074ab204fc9803c9
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">As some of you know, I&#39;ve been working on providing su=
pport for Dylan when debugging with LLDB using the LLDB Python API.<div><br=
></div><div>As a sneak peak at what is possible, check out the display of l=
ocal variables &amp; arguments with their slots to a depth of 2 below.</div=
>
<div><br></div><div>This and more is coming soon to Open Dylan&#39;s master=
 branch ...</div><div><br></div><div>=C2=A0- Bruce</div><div><br></div><div=
><div>(lldb) frame variable -D 2</div><div>(dylan_value) mepargs_ =3D 0xbff=
fd4d0 {&lt;simple-object-vector&gt;: size: 2} {</div>
<div>=C2=A0 [0] =3D 0x00000009 {&lt;integer&gt;: 2}</div><div>=C2=A0 [1] =
=3D 0x02862eb0 {&lt;byte-char-file-stream&gt;} {</div><div>=C2=A0 =C2=A0 [o=
uter-stream] =3D 0x02862eb0 {&lt;byte-char-file-stream&gt;}</div><div>=C2=
=A0 =C2=A0 [private-stream-element-type-value] =3D 0x001884d8 {&lt;class&gt=
;}</div>
<div>=C2=A0 =C2=A0 [private-stream-direction-value] =3D 0x00000005 {&lt;int=
eger&gt;: 1}</div><div>=C2=A0 =C2=A0 [private-stream-lock-value] =3D 0x0018=
8374 {&lt;boolean&gt;: False}</div><div>=C2=A0 =C2=A0 [sequence-type] =3D 0=
x028b6000 {&lt;buffer&gt;}</div>
<div>=C2=A0 =C2=A0 [to-element-mapper] =3D 0x00188374 {&lt;boolean&gt;: Fal=
se}</div><div>=C2=A0 =C2=A0 [from-element-mapper] =3D 0x028b6000 {&lt;buffe=
r&gt;}</div><div>=C2=A0 =C2=A0 [to-sequence-mapper] =3D 0x00000001 {&lt;int=
eger&gt;: 0}</div><div>=C2=A0 =C2=A0 [from-sequence-mapper] =3D 0x00000001 =
{&lt;integer&gt;: 0}</div>
<div>=C2=A0 =C2=A0 [initial-position] =3D 0x00000001 {&lt;integer&gt;: 0}</=
div><div>=C2=A0 =C2=A0 [current-position] =3D 0x00000001 {&lt;integer&gt;: =
0}</div><div>=C2=A0 =C2=A0 [final-position] =3D 0x028a0260 {&lt;native-file=
-accessor&gt;}</div><div>=C2=A0 =C2=A0 [actual-stream-input-buffer] =3D 0x0=
01889b8 {&lt;class&gt;}</div>
<div>=C2=A0 =C2=A0 [actual-stream-output-buffer] =3D 0x00544400 {&lt;simple=
-method&gt;}</div><div>=C2=A0 =C2=A0 [stream-shared-buffer] =3D 0x00544414 =
{&lt;simple-method&gt;}</div><div>=C2=A0 =C2=A0 [stream-locator] =3D 0x0054=
af98 {&lt;simple-closure-method&gt;}</div>
<div>=C2=A0 =C2=A0 [accessor] =3D 0x0054afb0 {&lt;simple-closure-method&gt;=
}</div><div>=C2=A0 }</div><div>}</div><div>(dylan_value) e_ =3D 0x0018a284 =
{&lt;absent-engine-node&gt;} {</div><div>=C2=A0 [properties] =3D 0x00000001=
 {&lt;integer&gt;: 0}</div>
<div>=C2=A0 [engine-node-callback] =3D 0x0003a200 {}</div><div>=C2=A0 [engi=
ne-node-entry-point] =3D 0x001620d0 {}</div><div>}</div><div>(dylan_value) =
parent_ =3D 0x00547ac4 {&lt;incremental-generic-function&gt;: read-line} {<=
/div><div>=C2=A0 [xep] =3D 0x00161340 {}</div>
<div>=C2=A0 [function-signature] =3D 0x00547cf4 {&lt;keyword-signature+valu=
es&gt;} {</div><div>=C2=A0 =C2=A0 [signature-properties] =3D 0x02040805 {&l=
t;integer&gt;: 8454657}</div><div>=C2=A0 =C2=A0 [signature-required] =3D 0x=
00548150 {&lt;simple-object-vector&gt;: size: 1}</div>
<div>=C2=A0 =C2=A0 [signature-keys] =3D 0x005480c4 {&lt;simple-object-vecto=
r&gt;: size: 1}</div><div>=C2=A0 =C2=A0 [signature-key-types] =3D 0x00188e1=
8 {&lt;simple-object-vector&gt;: size: 256}</div><div>=C2=A0 =C2=A0 [signat=
ure-values] =3D 0x005482b0 {&lt;simple-object-vector&gt;: size: 2}</div>
<div>=C2=A0 }</div><div>=C2=A0 [%gf-cache] =3D 0x00000001 {&lt;integer&gt;:=
 0}</div><div>=C2=A0 [debug-name] =3D 0x005482dc {&lt;byte-string&gt;: size=
: 9, data: read-line} {</div><div>=C2=A0 =C2=A0 [string-element] =3D 0x0000=
0025 {&lt;integer&gt;: 9}</div>
<div>=C2=A0 }</div><div>=C2=A0 [generic-function-methods] =3D 0x00547d0c {&=
lt;pair&gt;} {</div><div>=C2=A0 =C2=A0 [head] =3D 0x005467bc {&lt;keyword-m=
ethod&gt;}</div><div>=C2=A0 =C2=A0 [tail] =3D 0x005482f0 {&lt;pair&gt;}</di=
v><div>=C2=A0 }</div><div>=C2=A0 [discriminator] =3D 0x02aebbe0 {&lt;monomo=
rphic-by-class-discriminator&gt;} {</div>
<div>=C2=A0 =C2=A0 [properties] =3D 0x010100a9 {&lt;integer&gt;: 4210730}</=
div><div>=C2=A0 =C2=A0 [engine-node-callback] =3D 0x0018b918 {&lt;unbound&g=
t;}</div><div>=C2=A0 =C2=A0 [engine-node-entry-point] =3D 0x00166080 {}</di=
v><div>=C2=A0 =C2=A0 [monomorphic-by-class-discriminator-key] =3D 0x0054ac1=
d {&lt;integer&gt;: 1387271}</div>
<div>=C2=A0 =C2=A0 [monomorphic-by-class-discriminator-next] =3D 0x02aebc00=
 {&lt;implicit-keyed-single-method-engine-node&gt;}</div><div>=C2=A0 }</div=
><div>=C2=A0 [incremental-gf-module] =3D 0x0053fba0 {&lt;module&gt;} {</div=
><div>=C2=A0 =C2=A0 [namespace-name] =3D 0x0053fbf4 {&lt;byte-string&gt;: s=
ize: 7, data: streams}</div>
<div>=C2=A0 =C2=A0 [home-library] =3D 0x0053fbb0 {&lt;library&gt;}</div><di=
v>=C2=A0 }</div><div>=C2=A0 [incremental-gf-domain-info] =3D 0x00188374 {&l=
t;boolean&gt;: False}</div><div>=C2=A0 [incremental-gf-method-libraries] =
=3D 0x00188394 {&lt;simple-object-vector&gt;: size: 0}</div>
<div>=C2=A0 [incremental-gf-properties] =3D 0x00000019 {&lt;integer&gt;: 6}=
</div><div>}</div><div>(dylan_value) T3 =3D 0x00000000 {}</div></div><div><=
br></div></div>

--f46d043c8046074ab204fc9803c9--

--===============0262042479==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

_______________________________________________
hackers mailing list
[email protected]
https://lists.opendylan.org/mailman/listinfo/hackers

--===============0262042479==--