
Das kann ich nachvollziehen, aber ich ziehe es vor, ein solches Array einzeilig anzuzeigen (dies würde es einfacher machen, zwei davon zu vergleichen). Daher habe ich die Datei „C:\Program Files\Microsoft Visual Studio\2022\Professional\Common7\Packages\Debugger\Visualizers\ZSAFEARRAY.natvis“ erstellt.
Der Grund dafür ist grundlegend: Beim Durchführen eines .natvisreload werden die nativen Visualisierer in diesem bestimmten Verzeichnis in alphabetischer Reihenfolge basierend auf dem Dateinamen behandelt. Die Verwendung eines Namens, der mit einem „Z“ beginnt, führt also dazu Datei, die nach „windows.natvis“ behandelt werden soll, wodurch der bereits vorhandene Visualizer überschrieben wird.
Aber was kann ich tun, um eine Liste von Informationen als Einzeiler anzuzeigen? Nun, die „windows.natvis“ enthält den folgenden Eintrag:
Code: Select all
32
value[$i],nvoxb
Code: Select all
APP_LOCAL_DEVICE_ID test; // for natvis reasons: check "ListItems"
test.value[0] = 0x01;
test.value[1] = 0x02;
test.value[2] = 0x04;
test.value[3] = 0x08;
test.value[4] = 0x10;
test.value[5] = 0x11;
test.value[6] = 0xAB;
test.value[7] = 0xFF;

=> Das ist mehr oder weniger das, was ich will.
Also habe ich sehr naiv das Element SAFEARRAY in geändert meinen ZSAFEARRAY.natvis-Eintrag wie folgt:
Code: Select all
rgsabound[cDims - $i - 1].cElements
value[$i],nvoxb
Backward
cDims
rgsabound[cDims - $i - 1].cElements
rgsabound[cDims - $i - 1].lLbound
((signed short *)(*this).pvData)
...
((unsigned int *)(*this).pvData)
...
Obwohl ich verstehe, warum es nicht funktionieren kann, habe ich keine Ahnung, wie ich es zum Laufen bringen kann.
Hat jemand eine Idee, wie man es bekommt? SAFERARRAY-Elemente als Einzeiler in einem Natvis?
Ich arbeite mit Visual Studio 2022.
Mobile version