Let's take this document. <p>foo</p> <script> var a = document.querySelector('p'); var b = 0; console.log(a); </script> Steps to reproduce 1. Load it in STP 179 for example with "data:text/html,<script…" 2. set a breakpoint on the line starting with var b 3. Choose Log Message in Edit Actions 4. Choose continue after the breakpoint 5. Enter ${a} for the log Message Result: When executing a reload, the log message from the breakpoint is [Log] [object HTMLParagraphElement] while console.log(a) is <p>foo</p> With ${console.log(a)} I get [Log] <p>foo</p> [Log] undefined With ${console.dir(a)} I get [Log] <p> (with an arrow showing all the properties, and the object already opened) [Log] undefined I'm not sure which one is the most useful, but [object HTMLParagraphElement] seems to be the less useful. Also probably in the other cases the undefined is also not useful.
<rdar://problem/116907593>
There is also the case in the dir case on should it be opened or closed by default.