.natvis文件用于调试时候自定义显示自定义类型的可视化提示。
一般这类文件存在
C:\Program Files (x86)\Microsoft Visual Studio\2022\Enterprise\Common7\Packages\Debugger\Visualizers路径下。
.natvis文件的规则在此不介绍,详见官网:在调试器中创建本机对象的自定义视图
在natvis失效的时候,检查以下选项是否被勾选,如果是,则解除勾选
如果没勾选还是无法显示正确的自定义试图,则考虑是否natvis文件出错。
在此处选择详细,在debug的时候检查需要可视化的自定义类型,直接对日志搜索你的自定义类名如:“QString”。如果出现error,检查error项对应的问题。然后根据error更改对应的natvis文件
最常见的错误
任然报错"##NAMESPACE##::QPoint"无效,
解决方法:删除qt4.natvis内的所有"##NAMESPACE##::"字符,tios调试时可正常显示
qt4 qt5版本比较常见 此处记录一下qt4的。
记录 qt4.natvis
{d->data,su} d->data,su {{ size={p->size} }} p->size p->array {d->data,s} {{ size={d->end - d->begin} }} d->end - d->begin *reinterpret_cast<$T1*>((sizeof($T1) > sizeof(void*))? reinterpret_cast<Node*>(d->array + d->begin + $i)->v: reinterpret_cast<$T1*>(d->array + d->begin + $i)) {{ size={d->size} }} d->size d->n n (*(QLinkedListNode<$T1>*)this).t ({key}, {value}) - key
- value
{{ size={d->size} }} d->size d->header.left left right *((QMapNode<$T1,$T2>*)this) (empty) ({key}, {value}) - key
- value
{{ size={d->size} }} d->numBuckets *((QHashNode<$T1,$T2>*)d->buckets[$i]) (empty) ({key}) - key
{{ size={q_hash.d->size} }} q_hash {d.data.b} {d.data.i} {d.data.u} {d.data.ll} {d.data.ull} {d.data.d} {d.data.c} {*((QMap<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QList<QVariant>*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QString*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QStringList*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QByteArray*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QBitArray*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QDate*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QTime*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} DateTime Url Locale {*((QRect*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QRectF*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QSize*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QSizeF*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QLine*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QLineF*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QPoint*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} {*((QPointF*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} RegExp {*((QHash<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))} EasingCurve LastCoreType Font Pixmap Brush Color Palette Image Polygon Region Bitmap Cursor KeySequence Pen TextLength TextFormat Matrix Transform Matrix4x4 Vector2D Vector3D Vector4D Quaternion Icon LastGuiType SizePolicy UserType Unknown type d.data.c *((QString*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QByteArray*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QMap<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QList<QVariant>*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QString*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QStringList*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QByteArray*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QBitArray*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QDate*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QTime*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QRect*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QRectF*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QSize*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QSizeF*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QLine*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QLineF*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QPoint*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QPointF*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr))) *((QHash<QString,QVariant>*)(d.is_shared ? d.data.shared->ptr: reinterpret_cast<const void *>(&d.data.ptr)))
上一篇:【概念辨析】结构体内存对齐
下一篇:支持向量机简单介绍