|
Judging by the version that's in Xcode, lldb is not ready yet. The command syntax is a bit inconvenient compared to gdb. Perhaps I should overlook that, because it's presumably designed to be the lowest level of the debugger, so you interact with a GUI or something rather than with lldb directly, but Xcode's expression window is such utter unreliable junk that I end up having to use lldb by hand all the time anyway. I've had problems with variable substitution. You can (say) ask it the value of $rip to find out what the value of the RIP register is, but if you try to set a breakpoint at $rip, it doesn't know what $rip is. I've had problems with lldb telling me that a struct is forward-declared, even though I'm trying to print a local value of that struct type. Sometimes lldb just gets confused, as in this exchange, which I reproduce verbatim, just as it happened: (lldb) p this
(const CustomTrafficStyle *) $2 = 0x200cf4e0
(lldb) p *this
error: invalid use of 'this' outside of a nonstatic member function
error: 1 errors parsing expression
lldb doesn't have gdb's @ operator for printing arrays; instead, there's this separate command for dumping memory. So instead of "p x[0]@100", you might do "me r -ff -c100 `x`" - which is obviously a big pain, because it's a lot more verbose. I don't even know offhand how you'd use an expression for the count argument either (more inconvenient syntax.) (Furthermore, I don't even believe the me command does exactly the same thing, because I don't think it prints structs, but it usually does the job just about well enough.)Finally, and most tiresomely, lldb will sometimes just print nonsense. So you might end up with something like this, which is all reasonable enough: (made-up example representative output, not a copy and paste) (lldb) p x
(int *) $2 = 0x1234578
(lldb) p i
(int) $3 = 100
(lldb) p x[100]
(int) $4 = 123
(lldb) p &x[100]
(int *) $5 = 0x12345998
But then... (lldb) p x[i]
(int) $6 = 0
(lldb) p &x[i]
(int *) $7 = 0xc4231777
Maddening. Absolutely maddening. |
So, I guess what I'm saying is: Even if lldb isn't ready yet (it probably isn't), you shouldn't judge it based on your experience with Xcode. Being integrated with Xcode would make any piece of software look like junk even if Knuth wrote it.