开发辅助工具
开发环境组成
通常开发环境由三部分组成:
构建环境:包括代码编写,程序编译,版本控制等功能。
调试环境:用于定位问题的辅助工具集
测试环境:用于验证目标程序是否满足用户要求的显性需求和隐性需求
嵌入式开发中,通常有20%的时间用于目标构建,80%的时间用于测试,调试和bug修复,工欲善其事,必先利其器,提高开发和调试效率十分重要.GNU为GCC编译器提供了配套的辅助工具集(Binutils),网址:http://www.gnu.org/software/binutils/
开发工具集
addr2line
将指定地址转换为对应的文件名和行号,常用于分析和定位内存错误的问题
addr2line示例:定位0地址访问
<代码> # include & lt; stdio.h> int g_global=0; int g_test=1; extern int * g_pointer; 走读生void函数(); int主要(int命令行参数个数,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("及函数=% p \ n ",和函数); printf(",主要=% p \ n”,及主要); func (); 返回0; }代码>
<强>示例代码func.c 强>
<代码> # include & lt; stdio.h> int * g_pointer; void函数() { * g_pointer=(int)“D.T.Software”; 返回; }代码>
1,开启核心转储选项
ulimit - c无限
2,运行程序,并生成崩溃的核心文件
执行导致程序崩溃的测序用例,执行后我们看到生成的核心文件
3,读取核心文件,获取IP寄存器的值(0 x08048000)
dmesg核心
在文件的最后几行,内容如下:
剔除称故乡文件中的调试信息,减少目标程序的大小
一本在程序发布前都选哟将调试信息剔除
过多的调试信息可能会影响程序的执行效率
带测试。从
objdump
反汇编目标文件,查看汇编到源码的映射
objdump - d函数。o
嵌入式开发/调试辅助工具