Source Insight 4.0 代码编辑器查看prototype和definition和caller的使用
sourceinsight编辑器使用英文菜单快捷键中文翻译开发实操用途Symbol infoCtrlR点击选中符号信息查看变量,函数,结构体完整属性:数据类型,定义文件,大小,存储类型,注释详情;Jump to DefinitionCtrl跳转到定义处最常用功能:光标放在函数/变量上,一键跳转至标识符被编写定义的代码位置Jump to Base TypeAlt0跳转至基础基类/底层原生类型面向结构体,typedef 自定义类型:比如自定义typedef uint32_t my_data;可追溯到uint32_t最原始的底层基础类型定义;C 中用于追溯父类基类定义Jump to PrototypeAlt-跳转至函数声明原型区分声明vs定义.h头文件的函数声明和.c源文件实现分时,一键跳到头文件函数声明位置.Jump To CallerCtrlAltC跳转至调用方查看谁调用了当前函数;列出所有调用该函数的代码行,逐个跳转溯源调用链路,排查调用逻辑Lookup ReferencesCtrl/查找所有引用全局检索整个工程里,该变量/函数被读取,修改,调用的全部位置,统计所有的引用点Show in Relation Window-在关联关系窗口展示打开独立可视化窗口,树形展示,结构体继承关系,函数调用树,变量引用层级,代码依赖图谱.1:Definition(定义) VS Prototype(原型)定义:.c文件里函数具体实现代码原型:.h头文件函数声明签名2:Caller调用者VS References全部引用Jump To Caller:只看调用本函数的地方Lookup References:包含赋值,读取,传参,调用所有用到这个符号的场景,范围更广.二、排查 BUG、梳理代码调用链路核心利器1. Jump To Caller跳转调用者调试问题最关键功能 比如你要修改一段视频解码逻辑需要确认整个工程里哪些地方调用了这个解码函数避免改完一处其他调用分支出现异常 排查崩溃、内存泄露时顺着调用者往上追溯完整调用栈理清程序执行流程。2. Lookup References全局查找所有引用范围比调用者更广不仅包含函数调用还包含变量赋值、读取、指针引用。 适合修改全局变量、硬件寄存器参数、全局配置宏时检索全工程所有使用点位防止改漏导致隐性 bug。3. Symbol Info符号信息快速查看变量类型、占用字节大小、全局 / 局部变量、所在文件。 排查数组越界、变量类型不匹配、缓存尺寸不足这类底层问题时随手查看信息很便捷。三、进阶梳理代码架构Show in Relation Window关联关系窗口会生成可视化树形图函数调用树、结构体嵌套关系、类继承关系。 刚接手一套陌生 SDK比如君正 IMP 编解码整套框架用这个窗口快速摸清整体代码架构不用一点点啃代码一、日常看大工程源码刚需高频场景你们项目是多文件拆分的 SDK(SDK、内核驱动、应用层代码混杂),几百上千个源文件,不靠这些跳转功能根本寸步难行Jump To Definition(跳转定义)⭐ 使用率最高(每天几十上百次)随便碰到一个结构体、API 函数、宏定义一点就跳转到源码编写位置。举例:看到jpeg_encode() 函数,一键跳转就能查看编码底层实现,排查 JPEG 压缩异常、OSD 叠加 bug 全靠它;没有这个功能,手动翻文件夹找代码要浪费几倍时间。Jump To Prototype(跳转函数原型)嵌入式C开发标准规范头文件放声明(.h),C文件放实现(.c)。想查看函数入参含义、返回值注释、接口约束时直接跳转到.h 头文件不用来回切换文件。Jump To Base Type(跳转基础类型)大量自定义类型:typedef 重命名、结构体嵌套、平台适配数据类型比如芯片自定义的句柄、缓存结构体。比如源码里到处是 IMP_HANDLE,逐层跳转可以追到最底层基础类型,看懂内存排布,排查内存溢出、结构体对齐问题非常好用。