![](https://img-blog.csdnimg.cn/c1fec27a009b4918be527a314edcec33.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Linux调试私房菜
文章平均质量分 85
UNIX及UNIX-like下的调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具相比于VC、z的优点是具有修复网络断点以及恢复链接等功能,比BCB的图形化调试器有更强大的功能。
Exp.Joker
这个作者很懒,什么都没留下…
展开
-
Linux调试私房菜(十二)项目开发的前期设计
开发流程的定义平台与框架的选择目录结构及源码管理嵌入式产品的开发效率开发流程的定义平台与框架的选择目录结构及源码管理嵌入式产品的开发效率开发流程的定义平台与框架的选择目录结构及源码管理嵌入式产品的开发效率开发流程的定义平台与框架的选择目录结构及源码管理嵌入式产品的开发效率......原创 2022-06-18 00:02:38 · 344 阅读 · 0 评论 -
Linux调试私房菜(十一)程序异常处理的设计
采用整数分区域的方式对异常进行表示 demo1 demo2To be continued …当前的设计中,直接输出异常号的方式易于问题定位吗?是否更好的异常输出方式?1. 每个模块的异常枚举定义于独立的文件2. 异常枚举的定义遵循固有的编码规范3. 编写独立程序处理异常枚举定义文件,生成对应的字符串数组4. 当项目中出现异常时 err2str.cpp......原创 2022-06-18 00:02:25 · 386 阅读 · 0 评论 -
Linux调试私房菜(十)系统模块管理的设计
硬件层,系统层,平台层,框架层,应用层同一层中的模块根据依赖关系能够继续分级源码分析module.c module.h 管理模块Dll.c Dll.h原创 2022-06-18 00:02:13 · 252 阅读 · 0 评论 -
Linux调试私房菜(九)设计,软件质量之本
注释应该起到画龙点睛的作用,用于简要的描述代码意图;避免使用注释描述程序的运行流程。让设备B定时重发RSP消息原创 2022-06-18 00:01:46 · 2043 阅读 · 1 评论 -
Linux调试私房菜(八)混淆指针与数组的问题、volatile,让我保持原样
main.cdefine.ctest.cglobal.hmain.cdevice.c未优化已优化main.cdevice.c如何理解const和volatile同时修饰变量?在语义上是否矛盾?原创 2022-06-17 14:41:41 · 376 阅读 · 0 评论 -
Linux调试私房菜(七)缔造程序兼容的合约
为什么下面的代码能够以0作为退出码结束程序运行?Linux下对于位域的存储方式是压缩存储。windows下对于位域的存储方式是非压缩存储。函数调用时,参数如何入栈?函数返回时,返回值在哪里?13. 问题当返回值类型为结构体时,如何将值返回到调用函数中?...原创 2022-06-17 14:36:34 · 437 阅读 · 0 评论 -
Linux调试私房菜(六)深入理解程序的结构
静态分析工具多半都是通过文件头来获得信息。局部变量存储在栈上。同是全局变量和静态局部变量,为什么初始化的和未初始化的保存在不同段中?.bss段中的变量不用在程序文件中保存初始值,从而减小可执行程序文件的体积,并且提高程序的加载效率。编译器默认四字节对齐查看.data的初始值 objdump -s -j .data test.out查看.rodata的初始值 objdump -s -j .rodata test.out...原创 2022-06-17 14:31:08 · 375 阅读 · 0 评论 -
Linux调试私房菜(五)调试利器 GDB
ulimit -c unlimited 程序崩溃时,产生core文件。gdb test.out corefile test.out set args D.T.Softwarerunps auxrun 运行程序start 运行后暂停watch.cframe.csp和bp在栈上保存tricks.c原创 2022-06-17 14:17:15 · 327 阅读 · 0 评论 -
Linux调试私房菜(四)揭开链接器的面纱、汇编语言的内嵌编程
源文件被编译后生成目标文件,这些目标文件如何生存最终的可执行程序?链接器的主要作用是把各个模块之间相互引用的部分处理好,使得各个模块之间能够正确的衔接。main()函数是第一个被调用执行的函数吗?链接选项-nostartfiles的意义是什么?链接时不要使用标准的系统启动文件。标准的系统库通常使用,除非使用-nostdlib或-nodefaultlibs。链接器根据什么原则完成具体的工作?在Linux中,进程代码段(.text)的合法起始地址为[0x08048000,0x08049000]8-1.lds8-原创 2022-06-17 14:10:52 · 916 阅读 · 0 评论 -
Linux调试私房菜(三)开发中的辅助工具
开发中的辅助工具1. 什么是开发环境?2. 嵌入式开发中的时间分配3. 问题:如何提高开发效率?工欲善其事,必先利其器!4. GNU为GCC编译器提供了配套的辅助工具集(Binutils)Binutils- GNU Project - Free Software Foundation5. addr2lne6. addr2line示例:定位0地址访问ip寄存器访问地址时出现段错误7. stripstrip test.out8. 注意事项9. ar10. nm 段标识说明由于未链接,所以地址都是相对偏移地址..原创 2022-06-17 14:06:14 · 1932 阅读 · 0 评论 -
Linux调试私房菜(二)嵌入式 C 语言编译器
嵌入式 C 语言编译器. GCC与gcc有什么不同原创 2022-06-17 14:01:21 · 509 阅读 · 0 评论 -
Linux调试私房菜(一)深入浅出处理器
从软件工程师的角度来看,只需要对不同的IO端口读写就可以操作外设;读写IO端口时候的具体值和意义需要查询具体的硬件手册。通过具体的硬件设计,可以使得地址总线上的值在某个范围时,片选信号为“真”,即︰使能连接的设备,从而读取相应地址中的数据!地址:0xFFFF1234printf 是IO操作,非常耗时同时结合日志调试法和断点调试法的优点,使得实时系统调试时,能够任意查看指定代码...原创 2022-06-17 13:18:33 · 482 阅读 · 0 评论