程序调试
文章平均质量分 50
记录程序调试方法和技巧
leon.liao
这个作者很懒,什么都没留下…
展开
-
程序调试 - Debug/Release 版本
说明在多年的嵌入式研发工作中,发现大部分中小公司都没有划分Debug/Release版本的习惯,即使是一些自誉业内翘楚以及大公司出来的创业团队。常见处理:整个研发阶段只有一种版本,几乎不使用额外工具,调试等通过打印而不使用gdb等工具。编程调试时使用带调试信息的版本,正式版本在此基础上strip下。个人理解是否需要区分Debug/Release版本Debug(调试阶段)、Release (版本发布阶段),每个程序的生命周期中都有这两个阶段,为了针对性处理,每个程序都应该有两种版本(D原创 2021-01-20 21:40:18 · 687 阅读 · 0 评论 -
调试工具 - 嵌入式平台GDB调试
说明gdb是C/C++编程中常用的调试工具,在嵌入式平台也是一样,但是大部分嵌入式设备内存空间都不充裕,运行gdb程序比较吃力,在嵌入式平台常采用GDB + GDB Server的方式。GDB + GDB Server方式是C/S结构,通过网络进行调试,以减少设备端的内存占用。环境搭建平台:SOC: ssc323交叉编译链:arm-buildroot-linux-uclibcgnueabihfgdb移植GDB源码下载地址:http://www.gnu.org/software原创 2020-11-03 21:34:04 · 672 阅读 · 0 评论 -
程序性能分析 - gperftools - Cpu Profiler
程序性能指标程序性能认证程序性能指标大部分情况下为运行时长。工具使用gperftoolsgperftools(google perftools)是一系列C/C++ 程序的性能工具,它是一个遵守 BSD 协议的开源项目。使用该工具可以对 CPU 时间片、内存等系统资源的分配和使用进行分析,或者使用其中的tcmalloc等库增加程序性能。库docs目录下有相应帮助文档。编译安装* 国内可以从github/gperftools获取源码wget https://github.com/gpe原创 2020-07-15 21:06:51 · 1295 阅读 · 1 评论 -
程序性能认知
程序性能体现程序性能体现于资源占用和运行时长,对于系统资源,程序需要充分利用资源,未使用也是一种浪费,大部分情况下,系统资源是富余的,使用率几乎不会全部达到100%,只有少部分情况下,系统资源需要计划分配,例如:嵌入式平台和服务器,因此大部分情况下程序性能只体现于运行时长。影响程序性能的的因素从下至上,从底层到上层因素如下。硬件性能程序是由指令和数据组成,程序大部分是cpu处理...原创 2020-03-17 21:20:45 · 180 阅读 · 0 评论 -
受限情况下的程序调试
说明在嵌入式产品开发中,经常出现一些情况,无法使用gdb调试,例如:平台不支持,例如:之前使用一款RK的芯片,芯片原厂告知不支持gdb调试,还未调通。公司可能为了节省成本或者研发一些低档次的产品而舍弃或者减少一些功能和硬件,例如:减少内存大小和存储空间等,导致gdb运行不了。其它设备因素导致gdb运行不了,例如:之前调试一款产品,cpu不足以运行gdb,并且设备只有串口,其它连接方式都不支持,所以也无法使用gdbserver。产品时期导致无法使用gdb调试,例如:大规模老化测试,生产和售后都原创 2020-05-26 19:43:37 · 383 阅读 · 0 评论 -
调试工具 - adb
说明adb是Android Debug Bridge(安卓调试桥) tools,是一个命令行工具,用于对通过USB与电脑连接的安卓设备进行调试。不仅仅是安卓设备,在嵌入式开发中,很多Linux设备当前也支持adb调试工具,例如:MTK平台。架构ADB是一个C/S架构的应用程序,由三部分组成:运行在pc端的adb client:命令行程序”adb”用于从shell或脚本中运...原创 2020-05-07 19:30:49 · 385 阅读 · 0 评论 -
调试工具 - 内存泄漏检测 - mtrace
简介mtrace 是 GUN glibc 库自带的函数接口,用来记录(因为malloc和free是glibc实现的函数)和分析内存使用问题,不需要使用额外的库。mtrace 只能用于c语言,因为它只检测malloc calloc,realloc和free等c语言使用接口使用方法需要包含头文件 mcheck.h只有两个函数 mtrace(),muntrace()例子:#incl...原创 2020-04-03 13:59:00 · 673 阅读 · 11 评论 -
调试工具 - 目录共享 - NFS 网络文件系统
说明NFS 是网络文件系统,可以在Linux 系统之间实现目录共享;嵌入式开发也中可以将PC linux系统上的目录直接mount到开发板上,调试程序非常方便。NFS也是最简单的在开发板和PC上共享目录的方式。在linux上可以通过nfs将其它linux系统上的目录直接mount到本地目录。好处在嵌入式开发中经常用到,优点如下:因为嵌入式设备空间一般较小,经常剩余空间不够,n...原创 2020-04-20 21:19:26 · 266 阅读 · 0 评论 -
调试工具 - 调用跟踪 - strace,ltrace
说明在开发中,经常会遇到程序运行结果和预期结果不同,需要加打印来跟踪代码的执行情况,但是依然不清楚程序真正做了些什么,为了解决这个问题,我们可以使用strace和ltrace工具来跟踪程序执行。strace 可以跟踪程序的系统调用,以文本形式输出系统调用的名字,参数和返回值。ltrace 可以跟踪应用层库函数的调用,以文本形式输出系统调用的名字,参数和返回值。分析strace和lt...原创 2020-04-11 18:46:03 · 392 阅读 · 0 评论 -
调试方法 - 崩溃问题定位 - backtrace
说明在嵌入式开发中,由于资源限制,无法使用gdb进行问题调试,这种情况下如果出现程序崩溃,定位问题会比较麻烦。研究方案网上流行开源工具:Google breakpad。backtrace + addr2line。Google breakpadGoogle breakpad是一个非常实用的跨平台崩溃转储和分析模块,支持Windows,Linux和Mac和Solaris多个平台。...原创 2020-04-11 18:23:26 · 2356 阅读 · 0 评论