SORU
6 Aralık 2012, PERŞEMBE


Visual Studio 2012 Natvis atla İndexListİtems

Qt sınıfları için natvis dosyası oluşturma ve ben bir sorun ile karşılaştım.

QHash nesneleri görselleştirmek için bu iki tür yarattı

<Type Name="QHashNode<*,*>">
    <DisplayString Condition="next->next == 0">{{ key={key} value={value} h={h}}}</DisplayString>
    <DisplayString>{{ key={key} value={value} h={h} withCollision }}</DisplayString>
    <Expand>
        <Item Name="NextNode">reinterpret_cast<QHashNode<$T1,$T2> *>(next)</Item>
    </Expand>
</Type>

<Type Name="QHash<*,*>">
    <DisplayString>{{ size={d->size} buckets={d->numBuckets} }}</DisplayString>
    <Expand>
        <IndexListItems>
            <Size>d->numBuckets</Size>
            <ValueNode Condition="reinterpret_cast<QHashNode<$T1,$T2> *>(d->buckets[$i]) != e">reinterpret_cast<QHashNode<$T1,$T2> *>(d->buckets[$i])</ValueNode>
        </IndexListItems>
    </Expand>
</Type>

Bu kadar çok fazla çalışıyor, ama QHash bellekte sürekli olmadığı için, geçersiz girişleri var. Durumu

reinterpret_cast<QHashNode<
$T1,$T2> *>(d->buckets[$i]) != e 

zaten geçersiz olan Bu filtreler, ama hala <Unable to display value> olarak gösterilir.

Eğer tamamen o kayıtlar atlamak için bir yol olup olmadığını biliyor mu?

Hiç autoexp ile çalıştı.dat bunu yapmak için eski yol olan dosya, ama Qt-eklenti yüklü dosyayı bakarken ifadesi gibi geliyor bana

#switch ($e.next != 0) #case 1 (
    $e
)

belki natvis dosyası da bunu yapmak için bir yol var umarım o tam olarak ne?

Eğer ilgilenen varsa, natvis dosyası verebilirim, ama ben sadece şimdiye kadar QString, QByteArray, QList, Deyişle, ve (sorunlu) QMap QHash.

CEVAP
24 EYLÜL 2013, Salı


Tanım bitişik MSDN page on writing type visualizers, <IndexListItems> göre

İndexListİtems Genişleme

Arrayıtems dizi elemanları bellekte bitişik olarak düzenlendiği varsayılmaktadır. Hata ayıklayıcı sadece geçerli öğe için bir işaretçi tarafından artan bir sonraki öğeye alır. Değer düğüm dizini değiştirmek için gereken durumlar desteklemek için, dizin listesi öğeleri kullanılabilir. İşte bir görüntüleyici 'İndexListİtems' düğümü: [....] Arrayıtems ve İndexListİtems arasındaki tek fark bu. '' örtülü ile Art eleman tam ifade bekliyor '$i' parametresi. ValueNode

Ayrıca, ben the Qt Labs VSTools repository its documentation işaret olabilir? Özellikle tools/Qt4EEAddin/qt5.natvis yazmaya çalışıyorsun sanırım ne gibi büyük bir anlaşma gibi görünüyor? Yaaslındane yazıyorsun? ^_^) Her halükarda, bence en iyi yaptığınız şey qt5.natvis belirli bir özel <DisplayString> boş QHashNodes ama değil denemek elide boş kova QHash.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Damian Winter

    Damian Winte

    27 ŞUBAT 2007
  • Jesse Pimenta

    Jesse Piment

    5 EKİM 2011
  • MandMEvangelists

    MandMEvangel

    28 Ocak 2008