Bug #18839 2012-12-22 14:18

giles314

watch tree indent incorrect

The debugger produced:
[debug]> output *pAutomaton
[debug](TDragAutomaton) {
[debug]  <wxEvtHandler> = {
[debug]    <wxObject> = {
[debug]      _vptr.wxObject = 0xb2bcc8, 
[debug]      static ms_classInfo = {
[debug]        m_className = 0xae6b3c, 
[debug]        m_objectSize = 8, 
[debug]        m_objectConstructor = 0, 
[debug]        m_baseInfo1 = 0x0, 
[debug]        m_baseInfo2 = 0x0, 
[debug]        static sm_first = 0xb88c60, 
[debug]        m_next = 0xbb6168, 
[debug]        static sm_classTable = 0x6d033a0
[debug]      }, 
[debug]      m_refData = 0x0
[debug]    }, 
[debug]    <wxTrackable> = {
[debug]      m_first = 0x85480c8
[debug]    }, 
[debug]    members of wxEvtHandler: 
[debug]    static sm_eventTableEntries = {{
[debug]        <wxEventTableEntryBase> = {
[debug]          m_id = 0, 
[debug]          m_lastId = 0, 
[debug]          m_fn = 0x0, 
[debug]          m_callbackUserData = 0x0
[debug]        }, 
[debug]        members of wxEventTableEntry: 
[debug]        m_eventType = @0xbb62e4
[debug]      }}, 
[debug]    static sm_eventTable = {
[debug]      baseTable = 0x0, 
[debug]      entries = 0xbb62d0
[debug]    }, 
[debug]    static sm_eventHashTable = {
[debug]      m_table = @0xaeaa00, 
[debug]      m_rebuildHash = false, 
[debug]      m_size = 31, 
[debug]      m_eventTypeTable = 0x6d053c0, 
[debug]      static sm_first = 0xb5a450, 
[debug]      m_previous = 0xbb5f20, 
[debug]      m_next = 0x0
[debug]    }, 
[debug]    m_nextHandler = 0x84b8580, 
[debug]    m_previousHandler = 0x0, 
[debug]    m_dynamicEvents = 0x0, 
[debug]    m_pendingEvents = 0x0, 
[debug]    m_pendingEventsLock = {
[debug]      {
[debug]        m_dummy1 = 111453512, 
[debug]        m_dummy2 = 0x6a4a548, 
[debug]        m_buffer = "H¥¤\006ÿÿÿÿ", '\0' <repeats 15 times>
[debug]      }
[debug]    }, 
[debug]    m_enabled = true, 
[debug]    {
[debug]      m_clientObject = 0x0, 
[debug]      m_clientData = 0x0
[debug]    }, 
[debug]    m_clientDataType = wxClientData_None, 
[debug]    static ms_filterList = 0x846bce0, 
[debug]    static ms_classInfo = {
[debug]      m_className = 0xaeadc6, 
[debug]      m_objectSize = 64, 
[debug]      m_objectConstructor = 0x80bdd0 <wxEvtHandler::wxCreateObject()>, 
[debug]      m_baseInfo1 = 0xbb6144, 
[debug]      m_baseInfo2 = 0x0, 
[debug]      static sm_first = 0xb88c60, 
[debug]      m_next = 0xbb62fc, 
[debug]      static sm_classTable = 0x6d033a0
[debug]    }
[debug]  }, 
[debug]  <IDragAutomaton> = {
[debug]    _vptr.IDragAutomaton = 0xb2bd30
[debug]  }, 
[debug]  <TDragHelper> = {
[debug]    <IDragCallback> = {
[debug]      _vptr.IDragCallback = 0xb2bd44
[debug]    }, 
[debug]    members of TDragHelper: 
[debug]    aScrollWindow = 0x84b8580, 
[debug]    aOrigin = {
[debug]      x = 0, 
[debug]      y = 0
[debug]    }, 
[debug]    aXScrollUnit = 1, 
[debug]    aYScrollUnit = 1, 
[debug]    aXScrollSpeed = -1163005939, 
[debug]    aYScrollSpeed = -1163005939, 
[debug]    aDragOper = -1, 
[debug]    aObject = 0xbaadf00d, 
[debug]    aIsDrag = false, 
[debug]    aIsScrolling = false, 
[debug]    aEvent = {
[debug]      <wxEvent> = {
[debug]        <wxObject> = {
[debug]          _vptr.wxObject = 0xb26368, 
[debug]          static ms_classInfo = {
[debug]            m_className = 0xae6b3c, 
[debug]            m_objectSize = 8, 
[debug]            m_objectConstructor = 0, 
[debug]            m_baseInfo1 = 0x0, 
[debug]            m_baseInfo2 = 0x0, 
[debug]            static sm_first = 0xb88c60, 
[debug]            m_next = 0xbb6168, 
[debug]            static sm_classTable = 0x6d033a0
[debug]          }, 
[debug]          m_refData = 0x0
[debug]        }, 
[debug]        members of wxEvent: 
[debug]        m_eventObject = 0x0, 
[debug]        m_eventType = 10006, 
[debug]        m_timeStamp = 0, 
[debug]        m_id = 0, 
[debug]        m_callbackUserData = 0x0, 
[debug]        m_handlerToProcessOnlyIn = 0x0, 
[debug]        m_propagationLevel = 0, 
[debug]        m_skipped = false, 
[debug]        m_isCommandEvent = false, 
[debug]        m_wasProcessed = false, 
[debug]        static ms_classInfo = {
[debug]          m_className = 0xaeade0, 
[debug]          m_objectSize = 40, 
[debug]          m_objectConstructor = 0, 
[debug]          m_baseInfo1 = 0xbb6144, 
[debug]          m_baseInfo2 = 0x0, 
[debug]          static sm_first = 0xb88c60, 
[debug]          m_next = 0xbb6258, 
[debug]          static sm_classTable = 0x6d033a0
[debug]        }
[debug]      }, 
[debug]      <wxMouseState> = {
[debug]        <wxKeyboardState> = {
[debug]          m_controlDown = false, 
[debug]          m_shiftDown = false, 
[debug]          m_altDown = false, 
[debug]          m_metaDown = false
[debug]        }, 
[debug]        members of wxMouseState: 
[debug]        m_leftDown = false, 
[debug]        m_middleDown = false, 
[debug]        m_rightDown = false, 
[debug]        m_aux1Down = false, 
[debug]        m_aux2Down = false, 
[debug]        m_x = 0, 
[debug]        m_y = 0
[debug]      }, 
[debug]      members of wxMouseEvent: 
[debug]      m_clickCount = -1, 
[debug]      m_wheelAxis = wxMOUSE_WHEEL_VERTICAL, 
[debug]      m_wheelRotation = 0, 
[debug]      m_wheelDelta = 0, 
[debug]      m_linesPerAction = 0, 
[debug]      static ms_classInfo = {
[debug]        m_className = 0xaab9b2, 
[debug]        m_objectSize = 72, 
[debug]        m_objectConstructor = 0x5e7c3e <wxMouseEvent::wxCreateObject()>, 
[debug]        m_baseInfo1 = 0xbb6270, 
[debug]        m_baseInfo2 = 0x0, 
[debug]        static sm_first = 0xb88c60, 
[debug]        m_next = 0xb89890, 
[debug]        static sm_classTable = 0x6d033a0
[debug]      }
[debug]    }, 
[debug]    aEventHandler = {
[debug]      <wxEvtHandler> = {
[debug]        <wxObject> = {
[debug]          _vptr.wxObject = 0xb57768, 
[debug]          static ms_classInfo = {
[debug]            m_className = 0xae6b3c, 
[debug]            m_objectSize = 8, 
[debug]            m_objectConstructor = 0, 
[debug]            m_baseInfo1 = 0x0, 
[debug]            m_baseInfo2 = 0x0, 
[debug]            static sm_first = 0xb88c60, 
[debug]            m_next = 0xbb6168, 
[debug]            static sm_classTable = 0x6d033a0
[debug]          }, 
[debug]          m_refData = 0x0
[debug]        }, 
[debug]        <wxTrackable> = {
[debug]          m_first = 0x0
[debug]        }, 
[debug]        members of wxEvtHandler: 
[debug]        static sm_eventTableEntries = {{
[debug]            <wxEventTableEntryBase> = {
[debug]              m_id = 0, 
[debug]              m_lastId = 0, 
[debug]              m_fn = 0x0, 
[debug]              m_callbackUserData = 0x0
[debug]            }, 
[debug]            members of wxEventTableEntry: 
[debug]            m_eventType = @0xbb62e4
[debug]          }}, 
[debug]        static sm_eventTable = {
[debug]          baseTable = 0x0, 
[debug]          entries = 0xbb62d0
[debug]        }, 
[debug]        static sm_eventHashTable = {
[debug]          m_table = @0xaeaa00, 
[debug]          m_rebuildHash = false, 
[debug]          m_size = 31, 
[debug]          m_eventTypeTable = 0x6d053c0, 
[debug]          static sm_first = 0xb5a450, 
[debug]          m_previous = 0xbb5f20, 
[debug]          m_next = 0x0
[debug]        }, 
[debug]        m_nextHandler = 0x0, 
[debug]        m_previousHandler = 0x0, 
[debug]        m_dynamicEvents = 0x84c0860, 
[debug]        m_pendingEvents = 0x0, 
[debug]        m_pendingEventsLock = {
[debug]          {
[debug]            m_dummy1 = 111453568, 
[debug]            m_dummy2 = 0x6a4a580, 
[debug]            m_buffer = "\200¥¤\006ÿÿÿÿ", '\0' <repeats 15 times>
[debug]          }
[debug]        }, 
[debug]        m_enabled = true, 
[debug]        {
[debug]          m_clientObject = 0x0, 
[debug]          m_clientData = 0x0
[debug]        }, 
[debug]        m_clientDataType = wxClientData_None, 
[debug]        static ms_filterList = 0x846bce0, 
[debug]        static ms_classInfo = {
[debug]          m_className = 0xaeadc6, 
[debug]          m_objectSize = 64, 
[debug]          m_objectConstructor = 0x80bdd0 <wxEvtHandler::wxCreateObject()>, 
[debug]          m_baseInfo1 = 0xbb6144, 
[debug]          m_baseInfo2 = 0x0, 
[debug]          static sm_first = 0xb88c60, 
[debug]          m_next = 0xbb62fc, 
[debug]          static sm_classTable = 0x6d033a0
[debug]        }
[debug]      }, 
[debug]      members of TDragHelper::TDragEventHandler: 
[debug]      aOwner = 0x84c0694
[debug]    }, 
[debug]    aScrollTimer = {
[debug]      <wxEvtHandler> = {
[debug]        <wxObject> = {
[debug]          _vptr.wxObject = 0xb54228, 
[debug]          static ms_classInfo = {
[debug]            m_className = 0xae6b3c, 
[debug]            m_objectSize = 8, 
[debug]            m_objectConstructor = 0, 
[debug]            m_baseInfo1 = 0x0, 
[debug]            m_baseInfo2 = 0x0, 
[debug]            static sm_first = 0xb88c60, 
[debug]            m_next = 0xbb6168, 
[debug]            static sm_classTable = 0x6d033a0
[debug]          }, 
[debug]          m_refData = 0x0
[debug]        }, 
[debug]        <wxTrackable> = {
[debug]          m_first = 0x0
[debug]        }, 
[debug]        members of wxEvtHandler: 
[debug]        static sm_eventTableEntries = {{
[debug]            <wxEventTableEntryBase> = {
[debug]              m_id = 0, 
[debug]              m_lastId = 0, 
[debug]              m_fn = 0x0, 
[debug]              m_callbackUserData = 0x0
[debug]            }, 
[debug]            members of wxEventTableEntry: 
[debug]            m_eventType = @0xbb62e4
[debug]          }}, 
[debug]        static sm_eventTable = {
[debug]          baseTable = 0x0, 
[debug]          entries = 0xbb62d0
[debug]        }, 
[debug]        static sm_eventHashTable = {
[debug]          m_table = @0xaeaa00, 
[debug]          m_rebuildHash = false, 
[debug]          m_size = 31, 
[debug]          m_eventTypeTable = 0x6d053c0, 
[debug]          static sm_first = 0xb5a450, 
[debug]          m_previous = 0xbb5f20, 
[debug]          m_next = 0x0
[debug]        }, 
[debug]        m_nextHandler = 0x0, 
[debug]        m_previousHandler = 0x0, 
[debug]        m_dynamicEvents = 0x0, 
[debug]        m_pendingEvents = 0x0, 
[debug]        m_pendingEventsLock = {
[debug]          {
[debug]            m_dummy1 = 111453624, 
[debug]            m_dummy2 = 0x6a4a5b8, 
[debug]            m_buffer = "¸¥¤\006ÿÿÿÿ", '\0' <repeats 15 times>
[debug]          }
[debug]        }, 
[debug]        m_enabled = true, 
[debug]        {
[debug]          m_clientObject = 0x0, 
[debug]          m_clientData = 0x0
[debug]        }, 
[debug]        m_clientDataType = wxClientData_None, 
[debug]        static ms_filterList = 0x846bce0, 
[debug]        static ms_classInfo = {
[debug]          m_className = 0xaeadc6, 
[debug]          m_objectSize = 64, 
[debug]          m_objectConstructor = 0x80bdd0 <wxEvtHandler::wxCreateObject()>, 
[debug]          m_baseInfo1 = 0xbb6144, 
[debug]          m_baseInfo2 = 0x0, 
[debug]          static sm_first = 0xb88c60, 
[debug]          m_next = 0xbb62fc, 
[debug]          static sm_classTable = 0x6d033a0
[debug]        }
[debug]      }, 
[debug]      members of wxTimer: 
[debug]      m_impl = 0x84c07d0
[debug]    }
[debug]  }, 
[debug]  members of TDragAutomaton: 
[debug]  aActionee = @0x84b86e0, 
[debug]  aCurState = dragStateOUT, 
[debug]  aStateTab = {0x84c01b0, 0x84c09d0, 0x84c09f0, 0x84c0a10, 0x84c0a30}, 
[debug]  aLastCursor = 0x0, 
[debug]  aObjectID = -1163005939, 
[debug]  aEnabled = true
[debug]}>>>>>>cb_gdb:


but C::B shows:
- <wxEvtHandle>
  + <wxObject>
  + <wxTrackable>
  - static sm_eventTableEntries
    - [0]
      + <wxEventTableEntryBase>
      - m_eventType
          baseTable
          entries
      + static sm_eventHashTable
        m_nextHandler
        m_previousHandler
        m_dynamicEvents
        m_pendingEvents
      + m_pendingEventsLock
        m_enabled
      + [9] 
        m_clientDataType
        static ms_filterList
      + static ms_classInfo
    + <IDragAutomaton>
    + <TDragHelper>

Which is incorrect because (at least):
- The [0] item has not been closed after m_EventType
- The static sm_eventTable has been zapped
- Its members have been transferred to m_EventType while it is not a structure

Those wxWidgets window and event types must be a nightmare to decode!
Category
Debugger
Group
 
Status
Open
Close date
 
Assigned to
tpetrov