[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