博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
软件开发--开发中的辅助工具
阅读量:6282 次
发布时间:2019-06-22

本文共 1486 字,大约阅读时间需要 4 分钟。

开发环境的概念

1.构建环境--代码编写,程序编译,版本控制
2.调试环境--用于定位问题的辅助工具集
3.测试环境--用于验证目标程序是否满足用户的显性需求和隐性需求
一般的嵌入式开发中的时间分配--代码编写及目标构建(20%) 测试 调试 修复(80%)

GNU为GCC编译器提供了配套的辅助工具集

在提供的网站上可以看出,提供的工具以及功能的介绍
软件开发--开发中的辅助工具
A.addr2line
1.将指定地址转换为对应的文件名和行号
2.常用于分析和定位内存访问错误的问题

addr2line示例:定位0地址访问

1.开启core dump选项--ulimit -c unlimited
2.运行程序,并生成崩溃时的core文件--执行导致程序崩溃的测试用例
3.读取core文件,获取IP寄存器的值--dmesg core
4.使用addr2line定位行代码--addr2line (地址) -f -e test

两个.c代码如下

#include 
int* g_pointer;void func(){ *g_pointer = (int)"D.T.Software"; return;}
#include 
int g_global = 0;int g_test = 1;extern int* g_pointer;extern void func();int main(int argc, char *argv[]){ printf("&g_global = %p\n", &g_global); printf("&g_test = %p\n", &g_test); printf("&g_pointer = %p\n", &g_pointer); printf("g_pointer = %p\n", g_pointer); printf("&func = %p\n", &func); printf("&main = %p\n", &main); func(); return 0;}

由func.c的(*g_pointer全局变量 没有进行初始化)可以看出该指针指向的是空,所以在运行会出现错误----(-g是打印调试信息)

软件开发--开发中的辅助工具
软件开发--开发中的辅助工具
软件开发--开发中的辅助工具软件开发--开发中的辅助工具
该示例完整的展示了addr2line的功能

B.strip

1.剔除程序文件中的调试信息,减少目标程序的大小
2.一般在程序发布前都需要将调试信息剔除
3.过多的调试信息可能影响程序的执行效率
软件开发--开发中的辅助工具
由上图可以看出 调试后的test.out的文件大小与运行了strip之后的文件大小的对比
注意事项:
1.几乎所有的调试辅助工具都依赖与目标文件中的调试信息
2.调试信息的运用都能够快速定位问题
3.使用gcc编译程序时使用-g选项生成调试信息
4.发布程序时再考虑是否使用strip剔除调试信息

C.ar

1.打包文件--ar crs libname.a x.o y.o
2.解压目标文件--ar x libname.a
软件开发--开发中的辅助工具
展示了 ar命令 打包与解压的操作

D.nm

1.列出目标文件在的标识符(变量名,函数名)
2.输出结果由三部分组成(地址,段,标识符)
软件开发--开发中的辅助工具
软件开发--开发中的辅助工具
E.size 与strings
1.size--获取目标文件在的所有大小--size test.out
2.strings--获取目标文件中的所有字符串常量--strings test.out
软件开发--开发中的辅助工具

转载于:https://blog.51cto.com/13475106/2363393

你可能感兴趣的文章
灵动空间 创享生活
查看>>
《UNIX网络编程 卷1:套接字联网API(第3版)》——8.6 UDP回射客户程序:dg_cli函数...
查看>>
不要将时间浪费到编写完美代码上
查看>>
《第一桶金怎么赚——淘宝开店创业致富一册通》一一第1章 创业梦想,怎样起步...
查看>>
基于容器服务的持续集成与云端交付(三)- 从零搭建持续交付系统
查看>>
《算法基础:打开算法之门》一3.4 归并排序
查看>>
高德开放平台开放源代码 鼓励开发者创新
查看>>
《高并发Oracle数据库系统的架构与设计》一2.5 索引维护
查看>>
《Exchange Server 2010 SP1/SP2管理实践》——2.4 部署外部网络环境
查看>>
Firefox 是 Pwn2own 2014 上攻陷次数最多的浏览器
查看>>
阿里感悟(十八)- 应届生Review
查看>>
《计算广告:互联网商业变现的市场与技术》一第一部分 在线广告市场与背景...
查看>>
话说模式匹配(5) for表达式中的模式匹配
查看>>
《锋利的SQL(第2版)》——1.7 常用函数
查看>>
《Arduino家居安全系统构建实战》——1.5 介绍用于机器学习的F
查看>>
jquery中hover()的用法。简单粗暴
查看>>
线程管理(六)等待线程的终结
查看>>
spring boot集成mongodb最简单版
查看>>
DELL EqualLogic PS存储数据恢复全过程整理
查看>>
《Node.js入门经典》一2.3 安装模块
查看>>