[lldb-dev] A bit of extra-polish for my lldb plugin
Nat! via lldb-dev
lldb-dev at lists.llvm.org
Fri May 26 14:27:50 PDT 2017
Let me show you a snippet of a lldb debug session in progress in my ObjC
variant:
```
-100000,100000,v,18.48
Process 45774 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = step in
frame #0: 0x0000000100000e2a multiple.debug`+[Foo
long:int:char:float:](self=Foo, _cmd=<no value available>,
_param=0x00007fff5fbff948) at multiple.m:15
12 char:(char) c
13 float:(float) d
14 {
15 printf( "%ld,%d,%c,%.2f\n", a, b, c, d);
-> 16 }
17
18 @end
(lldb) p *_param
(p.long:int:char:float:) $2 = (a = -100000, b = 100000, c = 'v', d =
18.4799995)
```
You can see that the parameter values `a,b,c,d` are actually fields of
a struct parameter `_param`. `_param` uniformly appears as the third
parameter after `self` and `_cmd`. `p _param->a` works of course, but it
would be nice to be able to say 'p a', since in the source code one sees
only `a`. `_param` is more or less an implementation detail.
A clue how to achieve this, would be very much appreciated.
Ciao
Nat!
[*] except, if it's a picture of thousand words :)
https://www.mulle-kybernetik.com/weblog/2015/mulle_objc_meta_call_convention.html
More information about the lldb-dev
mailing list