在VS中对Qt程序进行调试时,有时会碰到变量信息只显示p,d指针的问题,譬如一个QList变量,添加到监视窗口之后,显示内容如下:
既看不到QList大小,更看不到每个item的指针。
出现这个问题,是因为在VS的目录下缺少了定义显示Qt类型变量的.natvis文件。
VS的natvis文件一般放在如下路径(以本机VS2019举例):
C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\Packages\Debugger\Visualizers
对于Qt类型,在安装Qt时会自动安装对应的.natvis文件,但有时候可能因为某些问题,没有将.natvis文件放到上面的路径。
所以,我们要做的就是找到Qt的.natvis文件并放到VS对应的路径。
我本地通过everything,找到了qt5.natvis.xml.
拷贝这个文件到上面的VS路径,去掉.xml后缀。
再运行VS时,发现变量还是不能查看。修改VS调试选项,看一下natvis的诊断消息:
发现VS分析了我们qt5.natvis和qt6.natvis两个文件,但是报了一个错:
解决方案: 修改qt5.natvis, 将里面所有的 "##NAMESPACE##::"字符串删除。
重启VS,能正确显示Qt变量了!
扩展: QtVsTools工具有一个在pdb中嵌入natvis的选项
如果此项为Enable,如果编译器找不到对应的qtxx.natvis文件时,编译会报错!!!!