当前位置: 首页 > news >正文

建筑公司网站设计模板/网络营销的认识

建筑公司网站设计模板,网络营销的认识,wordpress创建注册,个人简历模板免费下载手机版C程序开发过程中,内存往往是一个经常需要关心的话题,特别是在进行Debug时,能正确的找出内存中的异常数据更是非常有用。如对一个void*类型的数据void* data,在很多IDE中都可以对其直接进行内存查的,如下图是在Xcode中查…

C++程序开发过程中,内存往往是一个经常需要关心的话题,特别是在进行Debug时,能正确的找出内存中的异常数据更是非常有用。

如对一个void*类型的数据void* data,在很多IDE中都可以对其直接进行内存查的,如下图是在Xcode中查看的结果:

406b4986c676dd0efc78243b6d3ef330.png

从图中可以很清楚地看出data所指向内存的数据,具体方法就是xcode中,选中变量,直接右键选择查看内存即可。

但是在Android studio中问题就变得相对复杂了,AS并没有像xcode一样具有非常好的集成环境,因此需要使用一些更为原始的手段,可能会有一个插件,因为对AS并不熟悉,所以也没找到好的plugin。所以平时工作时一般会选择使用LLDB的命令来进行内存探查。

0d2f2d195b86708eea95fb7d1e845391.png

如图中所示,在debug时,怀疑data的数据是有问题的,需要确切知道data的值是不是我们预期的值,最好的方式是像xcode的提供的memory viewer来进行查看,但是AS中并没有找到相关的view,右键也没有相关提示。

一切回到最原始的做法,没有GUI帮助,那还是使用命令行吧,毕竟AS的断点调试还是基于LLDB的,所以使用LLDB的命令应该能搞定一切(这里比较好的一点是LLDB的命令和GDB的命令差不多)。

启动进程,当断点到当前行后,可以在debug view进行中操作了,如下图所示:

1f38146002e4a72d7aab2378858c3955.png

AS的debug view提供了两种模式,Variables和LLDB,大部分情况下,直接在Variables模式下足以,但当需要更加细致的操作时,还是需要回归到最原始的命令行模式(LLDB)。

1. frame variable

切到命令行后,也无需担心,依然可以快速查看所有的变量信息,并且得到的信息可能反而更加直观,如

121916ca01c53a250fef8f007ed7f430.png

2. 打印变量

除了查看所有变量之外,还是逐个查看单个变量,使用p(print)命令,如:

bb430731649b152d35e5501466e13adb.png

3. 调试内存

前面两个操作只是LLDB命令的简单用法,并非本文的重点,本文的重点debug内存,现在回到之前的问题,我们需要知道data中的值是否正确,当然这很多方法,比如输出log等。这里我使用lldb提供的memory命令。

memory read --size 4 --format x --count 4 0xbffff3c0
a8f6a03c556fdd9a304e7ab12ca57fc7.png

memory命令读取的地址可以是当前frame的变量,也可以是一个地址,如上图所示,两种方式得到的结果是相同的。

其中:

  • --size 指定的是每个值所占用字节数,可以是1,2,4,8等等,与要显示的数据类型要匹配
  • --format 显示类型 x表16进制,也可以是f(float), d(int), u(unsigned int)等。
  • --count 要显示的值的个数
  • 0xbffff3c0 是要调试的内存地址。

上面指令也可以简化成

emory read -s4 -fx -c4 data

结果如下:

24f8b4cb354d7994f720bdec2b6ed79c.png

如果查看每个byte的数据,还可以更加简化一下指令,其中最多只能显示1024个字节的数据,如果需要显示更多,需要自行做偏移,如

memory read -s1 -c128 data
784429405c872bb66665604354670b8f.png

本文的核心内容到此基本就结束了,除此之外,LLDB还提供了一个parray命令来输出数组类型的内容,如下图所示

8fda75fb3d7d3be21d9e8ba8e27212e5.png

注意,使用parray时,必然将void* 强制转换成具体类型。

本文只是简单使用了lldb的部分特性,其它更多内容需要各位自己查找LLDB的相关文档,希望能帮助各位正在使用Android studio进行c/C++开发的同学,希望至少能起到抛砖引玉的效果吧。

327576c33da7efb06a354919983c53fa.png
http://www.lbrq.cn/news/970363.html

相关文章:

  • 网站网络架构/全国新冠疫情最新消息
  • wordpress添加新php页面/seo教程 百度网盘
  • 外贸网站营销建站/b站新人视频怎么推广
  • 外链数是网站反向链接码/个人博客
  • 河南住房和城乡建设厅一体化平台网站/必应bing搜索引擎
  • 建设法律法规文本查询网站/郑州seo招聘
  • 经济与政府网站建设/深圳百度地图
  • 今日新闻头条内容/网站怎么做优化排名
  • 品辰设计的网站谁做的/教育机构加盟
  • 响应式网站 外贸/小吃培训机构排名前十
  • 分类网站有哪些/长沙好的seo外包公司
  • 网站建设实训日志/网络营销个人总结
  • 就业网站哪个靠谱/线上网络推广怎么做
  • 四川专门做招聘酒的网站/网络营销专业技能
  • 做网站产品图片素材/关键词优化最好的方法
  • 网站出现转站怎么办/seo 怎么做到百度首页
  • 阿里巴巴网站域名建设/nba西部排名
  • 网站产品要如何做详情/广州百度seo排名
  • 常德网站公司/百度一下你就知道官网
  • 一个人只做网站的流程/最近七天的新闻重点
  • 扬中市新闻网站/seo软件优化工具软件
  • 设计网站页面的作文/seo站内优化包括
  • 龙岩app定制/seo托管公司
  • 唐河做网站/seo视频教程汇总
  • 做的比较好的购物网站/百度开户需要什么资质
  • 学校门户网站建设的优势/网络推广引流是做什么工作
  • wordpress博客自媒体资讯主题/武汉seo和网络推广
  • 哪些网站做平面单页好看/搜索引擎公司排名
  • 中城投建设集团网站/手机网站seo免费软件
  • 服装商城的网站建设/网站关键词排名
  • 详解低速容错CAN(附与高速CAN对比表)
  • 函数柯里化详解
  • 16、鸿蒙Harmony Next开发:组件扩展
  • 网络--OSPF实验
  • ECUs、ZCUs、CCUs:产生的软件栈(SW stack)也有所不同
  • 【C++篇】:告别手动内存管理!——C++智能指针的快速上手指南