diff --git a/sources/pyside6/libpyside/dynamicqmetaobject.cpp b/sources/pyside6/libpyside/dynamicqmetaobject.cpp
index f3878b6e1..afd92a5ea 100644
--- a/sources/pyside6/libpyside/dynamicqmetaobject.cpp
+++ b/sources/pyside6/libpyside/dynamicqmetaobject.cpp
@@ -82,6 +82,7 @@ public:
     const QMetaObject *update();
 
     QMetaObjectBuilder *m_builder = nullptr;
+    MetaObjectBuilder *q{};
 
     const QMetaObject *m_baseObject = nullptr;
     MetaObjects m_cachedMetaObjects;
@@ -105,6 +106,8 @@ QMetaObjectBuilder *MetaObjectBuilderPrivate::ensureBuilder()
 MetaObjectBuilder::MetaObjectBuilder(const char *className, const QMetaObject *metaObject) :
     m_d(new MetaObjectBuilderPrivate)
 {
+    m_d->q = this;
+    qDebug() << __FUNCTION__ << this << "char*" << className << metaObject->className();
     m_d->m_baseObject = metaObject;
     m_d->m_builder = new QMetaObjectBuilder();
     m_d->m_builder->setClassName(className);
@@ -115,8 +118,10 @@ MetaObjectBuilder::MetaObjectBuilder(const char *className, const QMetaObject *m
 MetaObjectBuilder::MetaObjectBuilder(PyTypeObject *type, const QMetaObject *metaObject)
     : m_d(new MetaObjectBuilderPrivate)
 {
+    m_d->q = this;
     m_d->m_baseObject = metaObject;
     const char *className = PepType_GetNameStr(type);
+    qDebug() << __FUNCTION__ << this << "PyTypeObject" << className << metaObject->className();
     // Different names indicate a Python class inheriting a Qt class.
     // Parse the type.
     if (std::strcmp(className, metaObject->className()) != 0) {
@@ -124,6 +129,8 @@ MetaObjectBuilder::MetaObjectBuilder(PyTypeObject *type, const QMetaObject *meta
         m_d->m_builder->setClassName(className);
         m_d->m_builder->setSuperClass(metaObject);
         m_d->parsePythonType(type);
+    } else {
+        qDebug() << __FUNCTION__ << this << className << "NOT PARSING";
     }
 }
 
@@ -474,6 +481,7 @@ const QMetaObject *MetaObjectBuilderPrivate::update()
     if (!m_builder)
         return m_baseObject;
     if (m_cachedMetaObjects.empty() || m_dirty) {
+        qDebug() << __FUNCTION__  << q << m_baseObject->className();
         // PYSIDE-803: The dirty branch needs to be protected by the GIL.
         // This was moved from SignalManager::retrieveMetaObject to here,
         // which is only the update in "return builder->update()".
@@ -618,10 +626,18 @@ void MetaObjectBuilderPrivate::parsePythonType(PyTypeObject *type)
         }
     }
 
+    {
+        QDebug d = qDebug();
+        d << __FUNCTION__ << q << "type=" << type << type->tp_name << "baseObject="<< m_baseObject->className() << "bases=";
+        for (auto *b : basesToCheck)
+            d << "b=" << b << b->tp_name;
+    }
+
     // PYSIDE-315: Handle all signals first, in all involved types.
     // Leave the properties to be registered after signals because they may depend on
     // notify signals.
     for (PyTypeObject *baseType : basesToCheck) {
+        qDebug()  << "   " << type->tp_name << "checking base=" << baseType->tp_name;
         AutoDecRef tpDict(PepType_GetDict(baseType));
         PyObject *attrs = tpDict.object();
         PyObject *key = nullptr;
@@ -636,7 +652,9 @@ void MetaObjectBuilderPrivate::parsePythonType(PyTypeObject *type)
                     data->signalName = String::toCString(key);
                 for (const auto &s : data->signatures) {
                     const auto sig = data->signalName + '(' + s.signature + ')';
-                    if (m_baseObject->indexOfSignal(sig) == -1) {
+                    auto bi = m_baseObject->indexOfSignal(sig);
+                    qDebug()  << "   sig=" << sig << " bi=" << bi;
+                    if (bi == -1) {
                         // Registering the parameterNames to the QMetaObject (PYSIDE-634)
                         // from:
                         //     Signal(..., arguments=['...', ...]
@@ -674,7 +692,9 @@ void MetaObjectBuilderPrivate::parsePythonType(PyTypeObject *type)
                     auto *capsule = PyObject_GetAttr(value, slotAttrName);
                     const auto *entryList = PySide::Slot::dataListFromCapsule(capsule);
                     for (const auto &e : *entryList) {
-                        if (m_baseObject->indexOfSlot(e.signature) == -1)
+                        auto bi = m_baseObject->indexOfSlot(e.signature);
+                        qDebug()  << "  slot=" << e.signature << "bi=" << bi;
+                        if (bi == -1)
                             addSlot(e.signature, e.resultType, e.tag);
                     }
                 }
diff --git a/sources/pyside6/libpyside/qobjectconnect.cpp b/sources/pyside6/libpyside/qobjectconnect.cpp
index d953c6842..86d1fad55 100644
--- a/sources/pyside6/libpyside/qobjectconnect.cpp
+++ b/sources/pyside6/libpyside/qobjectconnect.cpp
@@ -214,6 +214,11 @@ QMetaObject::Connection qobjectConnectCallback(QObject *source, const char *sign
     QMetaObject::Connection connection{};
     const bool connectByIndex = !receiver.forceDynamicSlot
                                 && receiver.receiver != nullptr && receiver.slotIndex != -1;
+
+    qDebug() << __FUNCTION__ << source << signal << PySide::debugPyObject(callback)
+             << "\n  " << receiver << "connectByIndex=" << connectByIndex;
+
+
     Py_BEGIN_ALLOW_THREADS // PYSIDE-2367, prevent threading deadlocks with connectNotify()
     if (connectByIndex) {
         connection = QMetaObject::connect(source, signalIndex,
diff --git a/sources/pyside6/libpyside/signalmanager.cpp b/sources/pyside6/libpyside/signalmanager.cpp
index d08fb56bf..24a33f6c7 100644
--- a/sources/pyside6/libpyside/signalmanager.cpp
+++ b/sources/pyside6/libpyside/signalmanager.cpp
@@ -696,9 +696,12 @@ static int addMetaMethod(QObject *source, const QByteArray &signature,
     auto *pySelf = reinterpret_cast<PyObject *>(self);
     auto *dict = SbkObject_GetDict_NoRef(pySelf);
     MetaObjectBuilder *dmo = metaBuilderFromDict(dict);
+    auto *selfT = Py_TYPE(pySelf);
+    qDebug() << __FUNCTION__ << selfT->tp_name << dmo;
     // Create a instance meta object
     if (dmo == nullptr) {
         dmo = new MetaObjectBuilder(Py_TYPE(pySelf), metaObject);
+        qDebug() << __FUNCTION__ << selfT->tp_name << "NEW" << dmo;
         PyObject *pyDmo = PyCapsule_New(dmo, nullptr, destroyMetaObject);
         PyObject_SetAttr(pySelf, metaObjectAttr, pyDmo);
         Py_DECREF(pyDmo);
@@ -767,9 +770,13 @@ const QMetaObject *SignalManager::retrieveMetaObject(PyObject *self)
     Q_ASSERT(self);
 
     auto *ob_dict = SbkObject_GetDict_NoRef(self);
+    auto *selfT = Py_TYPE(self);
     MetaObjectBuilder *builder = metaBuilderFromDict(ob_dict);
-    if (!builder)
+    qDebug() << __FUNCTION__ << selfT << selfT->tp_name << "from dict" << builder;
+    if (!builder) {
         builder = &(retrieveTypeUserData(self)->mo);
+        qDebug() << __FUNCTION__ << selfT << selfT->tp_name << "retrieveTypeUserData" << builder;
+    }
 
     return builder->update();
 }
