web-dev-qa-db-ja.com

Visual Studio 2012およびQt4.8.5:デバッグモードでQStringの内容を表示する方法。

Visual Studio 2012とQt4.8.5を使用していますが、残念ながら、デバッグモードで作業しているときにQStringテキスト変数が表示されません。誰かがそれを許可するヒントを持っていますか? Qt4.8.5プラグインはVS2012には存在しません。

どうもありがとうございます

ザビエル

16
xavSIB

迅速で明示的な解決策があります(MSVCネイティブ、プラグインも.datファイルの設定も必要ありません) ここからの私の答えを参照してください

QString strQt4)があるとし、デバッガーの監視ウィンドウに追加します。

((str).d)->array,su 

付録,suは、データをユニコードおよびヌル終了文字列として解釈するようにデバッガーに指示します。

Qt5QString strの場合

(char*)str.d + str.d->offset,su
17
DomTomCat

autoexp.datは、デバッガオプションを「ネイティブの編集と続行を有効にする」に設定しない限り使用されません。

これが4.8.5のQStringの私のnatvis実装です(最初の25文字のみを拡張します)

<Type Name="QString">
    <DisplayString>"{d->data,sub}"</DisplayString>
    <StringView>d->data,sub</StringView>
    <Expand>
        <Item Condition="d->size &gt;= 0" Name="[size]">d->size</Item>
        <Item Condition="d->size &gt; 0" Name="[referenced]">d->ref._q_value</Item>
        <ArrayItems Condition="d->size&lt;=25">
            <Size>d->size</Size>
            <ValuePointer>d->data,c</ValuePointer>
        </ArrayItems>
        <ArrayItems Condition="d->size&gt;25">
            <Size>25</Size>
            <ValuePointer>d->data,c</ValuePointer>
        </ArrayItems>
        <Item Condition="d->size&gt;25" Name="...">d->size - 25</Item>
    </Expand>
</Type>

少なくともqt4.natvisはqt5.natvisと共存できます。どちらか一方が正しくロードされないため、...

7
user3684363

私にとって、Qt5とVisual Studio 2012では、これを実行しました。

プロジェクトオプション->デバッグ->デバッガタイプ->設定自動から混合

文字列は時計に表示されません。

3
darkgaze

Visual Studio2015の場合...

[ツール]> [オプション]> [デバッグ]> [一般]> [ネイティブ互換モードを使用する]をオンにします