Many types conform to CustomStringConvertible or CustomDebugStringConvertible, which means they have a "description" or "debugDescription" property, and you can use this easily in the debugger by using the "po" command instead of "p". (I think "po" is a synonym for "expr", but with a couple of explicit options.)
The @ sign just reflects the fact that the string is a NSString object. In Obj-C, a string literal without @ is a C-string.
Regarding the type, you could try (IIRC) "p type(ofValue: $R13)" to get the actual type. I may have the syntax wrong, since this type(of) thing is something that's a very recent change.
I strongly urge you to submit bug reports about this, for two reasons:
1. The debugger team is extremely responsive to feedback. I suspect they wish they more bug reports than they get, since developers often just throw up their hands when they hit a problem using the debugger.
2. The debugger currently has a tendency to show implementation-level details that I'm sure are wonderful for the Swift compiler writers, but don't help actual developers too much. Your case is a perfect example of this. You need the remind the team that developer-level usability matters, too.
What QuinceyMorris said but also…
These three payload words are an artefact of how protocol objects — and that includes the empty protocol, which is called
Any— work in Swift. This was discussed in glorious detail in WWDC 2016 Session 416 Understanding Swift Performance. Highly recommended!
Share and Enjoy
Quinn “The Eskimo!”
Apple Developer Relations, Developer Technical Support, Core OS/Hardware
let myEmail = "eskimo" + "1" + "@apple.com"