2012-12-06 10 views
49

मैं क्यूटी कक्षाओं के लिए एक नाटविस फ़ाइल बना रहा हूं और मैं एक समस्या में भाग गया।विजुअल स्टूडियो 2012 नटविस इंडिपलिस्टलिस्ट

आदेश QHash वस्तुओं कल्पना करने के लिए मैं इन दो प्रकार बनाया:

<Type Name="QHashNode&lt;*,*&gt;"> 
    <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&lt;QHashNode&lt;$T1,$T2&gt; *&gt;(next)</Item> 
    </Expand> 
</Type> 

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

काफी काम करता है, लेकिन जब से QHash स्मृति में लगातार नहीं है, वहाँ अमान्य प्रविष्टियों के एक बहुत हैं। हालत

reinterpret_cast&lt;QHashNode&lt; 
$T1,$T2&gt; *&gt;(d->buckets[$i]) != e 

पहले से ही उन लोगों के बाहर है कि अमान्य हैं फिल्टर, लेकिन वे अभी भी <Unable to display value> के रूप में दिखाए जाते हैं।

क्या किसी को पता है कि उन प्रविष्टियों को पूरी तरह से छोड़ने का कोई तरीका है या नहीं?

मैं वास्तव में autoexp.dat फ़ाइल जो यह करने के लिए पुराना तरीका था के साथ काम नहीं किया है, लेकिन स्थापित मुझे लगता है कि बयान

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

करता है जब क्यूटी-प्लगइन के साथ फ़ाइल को देखकर ठीक है, तो मुझे उम्मीद है कि नाटविस फ़ाइल में भी ऐसा करने का कोई तरीका है?

यदि कोई दिलचस्पी लेता है, तो मैं आपको नेटविस फ़ाइल दे सकता हूं, लेकिन मेरे पास केवल QString, QByteArray, QList, QVector, QMap और (समस्याग्रस्त) QHash है।

+0

मुझे अपने हैश कंटेनर के साथ एक ही समस्या है। मुझे यह सुविधा अनुरोध भी मिला कि मैंने इसके लिए मतदान किया: http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/3712689-implement-the-features-missing-in-natvis-that-auto – JCash

+0

! = ई * – cmd

+0

के लिए एक .gt होना चाहिए [यह लिंक] (http: //blogs.msdn।कॉम/बी/vcblog/संग्रह/2013/06/28/का उपयोग कर विजुअल स्टूडियो 2013-टू-लिखने पोषणीय देशी-दृश्यावलोकन-natvis.aspx)। यह आपकी मदद कर सकता है ... –

उत्तर

0

ऐसा लगता है, बस एचटीएमएल टैग।

, '<', '>'

अधिक जानकारी के साथ बदलने को देखने here

2

MSDN page on writing type visualizers के अनुसार, <IndexListItems> परिभाषा के द्वारा सन्निहित हैं:

IndexListItems विस्तार

ArrayItems मानते हैं कि सरणी तत्वों को conti बाहर रखा गया है स्मृति में गहराई से। डीबगर अगले तत्व को अपने सूचक को वर्तमान तत्व में बढ़ाकर प्राप्त करता है। उन मामलों का समर्थन करने के लिए जहां आपको इंडेक्स को वैल्यू नोड में हेरफेर करने की आवश्यकता है, इंडेक्स सूची आइटम का उपयोग किया जा सकता है। 'इंडेक्स लिस्ट इटम्स' नोड का उपयोग करके एक विज़ुअलाइज़र यहां दिया गया है: [....] ArrayItems और IndexListItems के बीच एकमात्र अंतर यह है कि 'ValueNode' को 'i i' पैरामीटर के साथ ith तत्व को पूर्ण अभिव्यक्ति की अपेक्षा है।

इसके अलावा, क्या मैं आपको the Qt Labs VSTools repository और its documentation पर इंगित कर सकता हूं? विशेष रूप से tools/Qt4EEAddin/qt5.natvis मुझे लगता है कि आप क्या लिखने की कोशिश कर रहे हैं की तरह एक बड़ा सौदा दिखता है? (या यह वास्तव में जो आप लिख रहे हैं?^_ ^) किसी भी तरह से, मुझे लगता है कि आप सबसे अच्छा कर सकते हैं qt5.natvis में, जिसमें QHashNodes खाली <DisplayString> है, लेकिन खाली बाल्टी को खाली करने की कोशिश नहीं करता है QHash

+0

यह उत्तर/कथन बहुत गलत है। प्रलेखन का कहना है कि " स्मृति में संगत रूप से रखे गए हैं" नहीं कि को संगत रूप से रखा गया है। इंडेक्स लिस्ट इटम्स को इंडेक्सिंग का उपयोग करने के तरीके के रूप में प्रदान किया जाता है जबकि ArrayItems नहीं करता है। मैं टिप्पणी कर रहा हूं ताकि नाटविस सहायता की खोज करते समय दूसरों को गुमराह न हो। – KymikoLoco

संबंधित मुद्दे