为什么 %DebugPrint 不打印关于我的对象的所有信息?

Why %DebugPrint doesn't print all information about my object?

node --allow-natives-syntax test.js

var obj = {a: 1};
%DebugPrint(obj);

它会输出: 0x053bedbc1399 <Object map = 0x53b630d1d51>

但在 v8 的早期版本中,它会打印有关对象的完整信息,例如:

0x337ab90027d9: [Map]
 - type: JS_ARRAY_TYPE
 - instance size: 32
 - inobject properties: 0
 - elements kind: PACKED_SMI_ELEMENTS
 - unused property fields: 0
 - enum length: invalid
 - back pointer: 0x337a1f6822e1 <undefined>
 - instance descriptors (own) #1: 0x337a3c307a69 <FixedArray[5]>
 - layout descriptor: 0x0
 - transitions #1: 0x337a3c307979 <TransitionArray[4]>Transition array #1:
     0x337a1f684631 <Symbol: (elements_transition_symbol)>: (transition to HOLEY_SMI_ELEMENTS) -> 0x337ab9002889 <Map(HOLEY_SMI_ELEMENTS)>

 - prototype: 0x337a3c307809 <JSArray[0]>
 - constructor: 0x337a3c304f21 <JSFunction Array (sfi = 0x337a1f6a9cb1)>
 - code cache: 0x337a1f682251 <FixedArray[0]>
 - dependent code: 0x337a1f682251 <FixedArray[0]>
 - construction counter: 0

这是发布版和调试版之间的差异,而不是版本之间的差异。在 Release 模式下,大多数调试打印的实现都被跳过(出于二进制大小的原因),因此您只会得到一行输出。在调试版本中,您将获得完整的详细信息。这最近没有改变。