最近在研究C++开发安卓端so库,demo使用xamarin.android作为载体来验证算法库文件的准确性。调试过程中发现vector中的内容无法显示集合详细。如下图

研究了半天(参考链接2、3),发现需要使用.natvis文件进行debugger 可视化自定义功能。

步骤:

1.在VS的C++项目中新增:.natvis文件。

2.找到文件“Microsoft.Android.natvis”。

目录:Microsoft Visual Studio\2019\Community\Common7\IDE\CommonExtensions\Microsoft\MDD\Debugger

搜索里面的vector内容,作为参考:

  <!-- llvm stl -->

  <Type Name="std::__1::vector&lt;*&gt;">
<DisplayString>{{size={__end_ - __begin_}}}</DisplayString>
<Expand>
<Item Name="[size]" ExcludeView="simple">__end_ - __begin_</Item>
<Item Name="[capacity]" ExcludeView="simple">__end_cap_.__first_ - __begin_</Item>
<Item Name="[allocator]" ExcludeView="simple">__end_cap_</Item>
<ArrayItems>
<Size>__end_ - __begin_</Size>
<ValuePointer>__begin_</ValuePointer>
</ArrayItems>
</Expand>
</Type>

3.这里面的type类型和我们看到的不一致,修改后加入到自定义的.natvis文件中。

<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
<Type Name="std::__ndk1::__vector_base&lt;*&gt;">
<DisplayString>{{size={__end_ - __begin_}}}</DisplayString>
<Expand>
<Item Name="[size]" ExcludeView="simple">__end_ - __begin_</Item>
<Item Name="[capacity]" ExcludeView="simple">__end_cap_.__first_ - __begin_</Item>
<Item Name="[allocator]" ExcludeView="simple">__end_cap_</Item>
<ArrayItems>
<Size>__end_ - __begin_</Size>
<ValuePointer>__begin_</ValuePointer>
</ArrayItems>
</Expand>
</Type>
</AutoVisualizer>

再次调试,可以发现多了一个栏目:Visualized View,可以查看。

capacity字段缺失,对我来说不重要,可以在.natvis文件中去除。有需要的小伙伴可以研究看看。

参考链接:

1. Natvis support for Android debugging | C++ Team Blog (microsoft.com)

2. 在Visual Studio中使用Debug Visualizers在C++中实现对原始类的自定义调试信息显示 - X_Jun - 博客园 (cnblogs.com)

3. Visual Studio 2015 cannot inspect elements of vector (microsoft.com)

使用Visual Studio 调式NDK so 库时,调试工具无法显示vector内容的更多相关文章

  1. Visual Studio命令行创建库文件lib

    Visual Studio命令行创建库文件lib OS:win7 旗舰版SP1 64位 编译器: VS 2013 express 的cl 建一个文件Static_Lib.h,源代码如下 #ifndef ...

  2. 新手,Visual Studio 2015 配置Boost库,如何编译和选择,遇到无法打开文件“libboost_thread-vc140-mt-gd-1_63.lib“的解决办法

    1,到官网下载最新的boost,www.boost.org 这里我下载的1-63版本. 2,安装,解压后运行bootstrap.bat文件.稍等一小会就OK. 3,编译boost库.注意一定要使用VS ...

  3. [No0000AE]在 Visual Studio 中调试 XAML 设计时异常

    在 Visual Studio 中进行 WPF, UWP, Silverlight 开发时,经常会遇到 XAML 设计器由于遭遇异常而无法正常显示设计器视图的情况.很多时候由于最终生成的项目在运行时并 ...

  4. 解决Visual Studio 2010/2012在调试时lock文件的方法

    调试3dsmax插件,有一个避免每次修改插件代码都需要重启3dsmax的方法,就是将导出的核心代码写在一个独立的DLL中,然后在插件代码需要导出时LoadLibrary这个DLL,导出之后再FreeL ...

  5. 在Visual Studio中使用FFTW库

    FFTW不用做过多介绍,一般都是在linux下使用,包括放出windows版的作者也自己声明:we don't use Windows ourselves 但是由于要和MIC混合编程,想先在本地使用, ...

  6. Visual Studio 编译使用FLTK库

    FLTK介绍 FLTK (Fast Light Tool Kit 发音为fulltick) 是一种使用C++开发的GUI工具包,它可以应用于Unix,Linux,MS-Windows95/98/NT/ ...

  7. 新手,Visual Studio 2013 配置Boost库,如何编译和选择

    QuantLib installation in VC++ 2010 and later 参考:http://quantlib.org/install/vc10.shtml 1,到官网下载最新的boo ...

  8. 在 Visual Studio 中调试 XAML 设计时异常

    在 Visual Studio 中进行 WPF, UWP, Silverlight 开发时,经常会遇到 XAML 设计器由于遭遇异常而无法正常显示设计器视图的情况.很多时候由于最终生成的项目在运行时并 ...

  9. 使用Visual Studio的动态连接库创建通用数据库连接对话框

    1.在VS(此处文件夹文件以vs2010为例)安装文件夹下("%Visual Studio安装文件夹%/Common10/IDE/Microsoft.Data.ConnectionUI.Di ...

  10. 如何使用Visual Studio 2017调试.net库源代码

    在Visual Studio 2017按如下步骤设置: 1.取消选中(工具 - >选项 - >调试 - >仅我的代码)复选框.2.确保设置了(工具 - >选项 - >调试 ...

随机推荐

  1. git代码同步,代码同步到码云中

    首先在需要同步的代码根目录下打开终端,这里是在vscode的终端操作的,也可以用cmd 进入到项目目录,输入git status查看代码同步状态, 提示内红色的都是有变化的代码 git status ...

  2. .NET 模拟&编辑平滑曲线

    本文介绍不依赖贝塞尔曲线,如何绘制一条平滑曲线,用于解决无贝塞尔控制点的情况下绘制曲线.但数据点不在贝塞尔曲线的场景. 在上一家公司我做过一个平滑曲线编辑工具,用于轮椅调整加减速曲线.基于几个用户可控 ...

  3. 【Amadeus原创】Docker安装Nginx,并配置端口转发,配置SSL

    1,docker安装Nginx [root@hecs-29489 ~]# docker pull nginx Using default tag: latest latest: Pulling fro ...

  4. 《数据万象带你玩转视图场景》第一期:avif图片压缩详解

    前言 随着硬件的发展,不管是手机还是专业摄像设备拍出的图片随便可能就有几M,甚至几十M,并且现在我们处于随处可及的信息海洋里,海量的图片带来了存储问题.带宽问题.加载时延问题等等.对图片信息进行有效的 ...

  5. iOS录制屏幕

    iOS 录制屏幕 RPScreenRecorder 通过 RPScreenRecorder来录制屏幕 定义一个 RPScreenRecorder private var recorder: RPScr ...

  6. LocalLLaMA 客户端试验

    LM Studio. 可以直接下 hg 模型(实际使用需要自己修改成中国镜像). 有 local server, 符合 openai api 规范. 遗憾的是不支持选择显卡导致无法使用. Farada ...

  7. 【WEB前端】【报错解决】This request has been blocked; the content must be served over HTTPS.

    问题描述 部署WEB项目后,开启了强制HTTPS,产生如下错误: Mixed Content: The page at 'https://ask.mllt.vip/index.php/data1.ht ...

  8. docker-compose.yml 使用说明

    docker-compose.yml 结构 docker-compose.yml文件分为三个主要部分:services.networks.volumes..services主要用来定义各个容器.net ...

  9. Qt/C++编写视频监控系统82-自定义音柱显示

    一.前言 通过音柱控件实时展示当前播放的声音产生的振幅的大小,得益于音频播放组件内置了音频振幅的计算,可以动态开启和关闭,开启后会对发送过来的要播放的声音数据,进行运算得到当前这个音频数据的振幅,类似 ...

  10. Qt音视频开发8-ffmpeg保存裸流

    一.前言 最开始做的ffmpeg保存视频文件,就是直接保存的裸流数据,裸流数据一般是H264格式的数据,这种数据文件可以用部分播放器播放,由于不是标准的格式,很多播放器其实不支持的,需要安装对应的解码 ...