嵌入式为何钟爱SourceInsight,主要因为这个功能~

news2024/11/16 7:56:02

已剪辑自: https://mp.weixin.qq.com/s/F-gafwbZswpnY8EaCz8HxQ

不管是玩单片机还是嵌入式linux,只要是与硬件结合比较紧密的部分目前基本上还是C语言,当然了,不知道以后C语言会不会被取代,即便哪天被某种更加优秀的语言取代,对于大部分使用者而言也仅仅只是语法发生一些变化而已。更何况目前C语言渗透到嵌入式行业的各个角落,即使编程语言需要替代也是一个渐变的过程。想必大家在入门C语言的时候,一定会碰到这样的问题:“C语言程序的基本组成单位是什么?”,如果你没坚定的回答上来,那得怀疑一下自己的C语言功底了。没错,C语言程序是由函数构成的,函数是C程序的基本组成单位。这句话很简单,但是也同样太值得深入思考了,为什么不是变量、也不是执行顺序呢?在bug菌往期的一些文章中,其实隐隐约约有提到过一些,只要你把函数名称规范好、函数封装有理有据,基本上不需要写太多的注释,函数的名称就是最好的“文档”说明,而要读懂这篇“文档”无非就是要理顺函数之间的调用关系。没错,理顺函数之间的调用关系确实是你理解C语言程序、了解其代码原理和实现过程的关键,特别是一些大型工程代码,几乎不可能留给你足够的时间一句一句的参悟,更何况很多算法和处理策略都是比较成熟的实现,没必要重复的、花大量的时间去理解,当然了,如果你是针对性的学习和优化那就另当别论了。对于理顺函数之间的调用关系不同的人有不同的方式方法,比如一个函数一个函数的粗略阅读,然后单独拧出相关函数进行记录和整理,最后变成流程图或者结构图等等。也有朋友通过直接在函数内部添加打印函数,程序一旦运行就可以在相应的打印窗口列出函数之间的调用层次关系。当然还有非常多的方法,每种方法有优劣,但从效率方面考虑还是让软件根据我们的需求自动识别函数调用关系,并以一种更加形象直观的方式呈现给我们来使用和理解。对于目前在嵌入式软件中比较优秀的编辑器都有着查看函数调用关系的功能或者插件,bug菌用得比较多的还是Souceinsight的Relation Window窗口,你可能会问了为什么喜欢用SI?简洁、方便,能够满足我平时的阅码需求。

3

SI的Relation Window

那么这里就根据我平时的使用,简单聊一聊SI这块的功能。

SourceInsight的符号关系功能展示在如下位置打开:

图片

这里简单的编写了一个函数调用关系,来看看关系窗口的展示:

图片

可以看出函数调用关系已经为我们完整的展示。

并且可以通过点击左下角相关设置来改变函数调用关系的样式,SI的关系窗口主要是两种类型的视图:outline大纲视图和图形视图,前面我们展示了大纲视图,如下是另外两种图形视图展示:

图片

图片

有这功能在手,理解程序的速度不知道加快多少倍?

当然了再好的功能也需要使用者多熟悉,并勤加练习,不仅如此有时候我们需要了解更多的符号信息或者筛选出我们想要了解的关系,那么这些配置项目都可以在关系窗口的配置中供我们使用。

比如是否需要对符号进行自动跟踪的设置,对函数调用展开到第几层,对于关系视图中那些类型的符号可以过滤或者展示等等都可以根据你所要展示的效果进行设置,以便我们剔除掉一些不需要关注的符号关系信息,更加直观的分析整个工程的全貌。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/23041.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

m基于matlab的MIMO信道容量分析,对比了不同天线数量;非码本预编码SVD,GMD;码本预编码DFT,TxAA以及空间分集

目录 1.算法概述 2.仿真效果预览 3.MATLAB部分代码预览 4.完整MATLAB程序 1.算法概述 MIMO信道容量 平均功率分配的MIMO信道容量:通过Matlab仿真在加性高斯白噪声情况下的SISO (1*1)、SIMO(1*6)、MISO(4*1)、MIMO(3*3)、MIMO(4*4)系统的…

VMware Explore 2022 China,赋能中国企业加速实现云智能

全球领先的企业软件创新者VMware(NYSE: VMW)的年度技术盛会—— VMware Explore 2022 China于11月8日正式举行。本届大会以“探索多云宇宙”为主题,汇聚云计算领域的顶尖技术专家和创新者,通过150多场解决方案演讲、围绕云基础架构…

[附源码]Python计算机毕业设计超市团购平台

项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等等。 环境需要 1.运行环境:最好是python3.7.7,…

JuiceFS 使用效果及注意事项

以某线上集群为例,数据规模:每天写入 5TB,数据储存 30 天,热数据储存一周,节点数量:5 个热节点,15 个冷节点。 采用 JuiceFS 后,热节点保持不变,冷节点从 15 个降到了 1…

[b01lers2020]Life on Mars (难发现的sql注入)

[b01lers2020]Life on Mars 打开界面以后,查看各种都没有提示,果断扫描目录,但也是没获得什么。 到这里只能burp抓个包看看 抓包两个界面发现了get传参,考虑是否存在sql注入 尝试额以后发现只返回了一个1,试一下别的引…

Nginx显示500错误原因和解决方法

文章目录1.背景2.Nginx 常见的几种报错3. 解决500错误1.背景 最近在操作nginx 的时候出现了 Nginx 500 内部错误,在此记录一下原因,项目采用的是前后端分离方式,后端SpringBoot ,前端是Vue 部署到Nginx 下。 2.Nginx 常见的几种…

从水质监测运维工程师转行软件测试,武汉校区小哥哥除了收获10k高薪,还有...

从大学步入社会,每个人都会面临角色和身份的转变,大部分同学对此充满信心和期待,仿佛有用不完的精力、耗不尽的热情。可是社会中的磨砺也让心态慢慢变得成熟,生活、文化等方面的落差显现出来,想要做出改变,…

java项目-第151期ssm文物管理系统_java毕业设计_计算机毕业设计

java项目-第151期ssm文物管理系统_java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm文物管理系统》 该项目分为2个角色,管理员、用户。 用户可以浏览前台文物信息、论坛交流、文物资讯、留言反馈。 管理员负责登录后台系统&#xff0c…

[附源码]java毕业设计校医院病人跟踪治疗信息管理系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

产品质量模型

产品质量模型将系统/软件产品质量属性划分为8个特征:功能性、性能效率、兼容性、易用性、可靠性、安全性、可维护性、可移植性,每个特征由一组相关子特征组成。 衡量一个优秀软件的维度: 产品质量模型只应用于软件产品,或者包含软…

从零开始做一款Unity3D游戏<三>——编写游戏机制

添加跳跃 了解枚举 使用层遮罩 发射投射物 实例化对象 管理游戏对象的创建 游戏管理器 维护玩家属性 get和set属性 精益求精 图形用户界面 胜败条件 使用预编译指定和命令空间 总结 前面一章,我们专注于通过代码来移动玩家和相机,同时了解了…

深入理解计算机系统——Midterm Exam 2012

深入理解计算机系统——Midterm Exam 2012Problem 4 疑问Problem 6 疑问Problem 7 疑问Problem 8 疑问试卷&#xff1a;Midterm Exam 2012 答案&#xff1a;Exam Solutions Problem 4 疑问 第 4 题为第三章内容&#xff0c;这里觉得题目有一步骤写错了&#xff0c;<13> …

让Python可视化事半功倍!

分享一款不错的Matplotlib可视化查询手册&#xff0c;让Python Matplotlib事半功倍&#xff01; 当可视化时&#xff0c;记不清楚图形Marker名称、colormap名称、坐标轴刻度设置、图例设置等等时&#xff0c;稍微扫描一眼该手册&#xff0c;直接YYDS。 下面简单介绍一下这个手册…

SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.5 变更缓存供应商 Ehcache

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇5 整合第三方技术5.5 变更缓存供应商 Ehcache5.5.1 缓存实现方案5.5.…

部署支持使用Redis哨兵模式,支持纳管ClickHouse数据库,JumpServer堡垒机v2.28.0发布

2022年11月21日&#xff0c;JumpServer开源堡垒机正式发布v2.28.0版本。在这一版本中&#xff0c;JumpServer的部署支持使用Redis哨兵集群作为后端缓存数据库&#xff0c;从而使系统更加健壮和高可用。操作日志审计方面&#xff0c;新增支持查看资源变更信息。当资源有新增、更…

今天给大家介绍一篇基基于SSM超市管理系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

【迁移学习】分布差异的度量以及迁移学习的统一表征方法

在文本分类中&#xff0c;由于文本数据有其领域特殊性&#xff0c;因此&#xff0c;在一个领域上训练的分类器&#xff0c;不能直接拿来作用到另一个领域上&#xff0c;这就需要用到迁移学习。 迁移学习是机器学习中重要的研究领域&#xff0c;ICML、NIPS、AAAI、ICIR等国际人工…

号码认证平台有哪些?号码认证平台费用?

随着互联网的发展&#xff0c;电话经常接到骚扰电话、买房、保险等电话&#xff0c;让用户不胜其扰。目前提供电话标记的软件个数达到几十款之多&#xff0c;可以有效预防诈骗发生&#xff0c;也暴露出“号码标记随意性强”“错误标记取消难”等一系列问题。如果被恶意标记&…

Rancher 全球化部署最佳实践

作者 万绍远&#xff0c;CNCF 基金会官方认证 Kubernetes CKA&CKS 工程师&#xff0c;云原生解决方案架构师。对 ceph、Openstack、Kubernetes、prometheus 技术和其他云原生相关技术有较深入的研究。参与设计并实施过多个金融、保险、制造业等多个行业 IaaS 和 PaaS 平台设…

美欧之后,台湾地区推出芯片法案:搞研发、买设备最高抵减50%税额

前言 在全球科技博弈加剧的背景下&#xff0c;芯片作为资本与技术双密集型产业&#xff0c;在全球产业链的重要地位已经不言而喻。 今年以来&#xff0c;欧洲、美国、日本、韩国、印度等国家/地区陆续出台了扶持半导体产业发展的法案&#xff0c;以加强本土半导体实力。而台湾…