无标题
git学习笔记
嵌入式软件调试
嵌入式软件调试理论基础• 什么是软件调试?• 英文software debug,又译软件侦错 • 软件调试过程,就是发现软件失效,定位软件错误并将其修复的过程 软件调试的重要性• 据统计:软件调试、 debug时间一般占软件开发周期的50%以上,是软件开发中耗时最多的一项活动 • 很多项目延期,往往就栽在不能定位的bug上。 • 随着软件、系统越来越复杂,软件调试技术需要与软件工程、开发技术同步升级 • 软件调试理论和知识尚未系统化,很多开发者对其基本原理知之甚少,不能根据实际情况融会贯通地去使用各种调试技巧,对于复杂问题、BUG往往一筹莫展、无能为力 软件调试的特点• 是一项具有挑战性、很强技巧性的工作• 复杂度高、难度大,必须通过现象,大量的分析,才能逐步接近真相,犹如福尔摩斯探案,抓住蛛丝马迹,层层推理。• 需要知识面广:设计到硬件、软件、操作系统、编译器等。• 有些bug极难复现,定位困难。• 是一项不受欢迎的工作• 对心理影响:– 打击人的自信、消磨工作热情、考验人的耐心和抗压能力、怀疑人生、怀疑自己是不是这块料…• 对生理影响:–...
无标题
c++整理day1内容梳理一、标准输入输出cin cout 用的少: cerr clog 中文显示乱码 1、c++ 临时设置 一个文件 的编码 步骤:菜单栏里面-> 编辑->select Encoding 。如果是编写 c++ 程序 选择 GBK 格式 2、qt 选择utf8 格式 设置默认编码的方式: 菜单栏里面 -> 工具栏 二、内存分区模型在c++中内存主要分为 三、命名空间 namespace1、概念:命名空间是用户自定义的一个作用域2、作用:处理程序中常见的命名冲突3、三种使用方式:全部引用语法:using namespace +空间名字 +{内容} 例如: 1234using namespace student { int a ;} 部分引用语法:using namespace 大的命名空间::命名空间(注意 后面只能是命名空间的名字) 例如:using namespace class2308::c_class; 域调用例如:cout << class2308::c_class::str...
无标题
...
无标题
存储类型在C语言中,存储类型(或存储类别)定义了变量的作用域(即它可以在哪里被访问)和生命周期(即它存在多久)。以下是C语言中的几种存储类型: 自动存储类型(Auto)自动存储类型是所有局部变量的默认存储类型。这些变量在函数开始时被创建,并在函数结束时被销毁。它们通常存储在栈内存中。可以使用 auto 关键字显式声明,但这很少见。 123void function() { auto int x = 1; // 自动存储类型} 静态存储类型(Static)静态变量仅在程序的执行期间被初始化一次,之后它们保持其值,直到程序终止。可以使用 static 关键字来声明静态变量。 1234void function() { static int x = 0; // 静态存储类型 x++;} 寄存器存储类型(Register)寄存器变量被存储在CPU的寄存器中,而不是RAM中,以便更快地访问。可以使用 register 关键字来声明寄存器变量。但是,这只是一个建议,编译器可以选择忽略它。 123void...
无标题
系统移植(一)应用层开发和嵌入式底层开发的区别1》嵌入式是什么?官方:嵌入式是以应用为中心,以计算机技术为基础,软硬件可剪裁的计算机系统。 嵌入式系统的特点:成本,体积,可靠性,功耗都有严格要求。 解读: 1,计算机系统 2,针对某个应用的,也就是通常所说的“专用的” 说白了,就是针对某个应用的计算机系统 2》应用层开发和嵌入式底层开发的区别Text12345编程思路: 编译:gcc 运行hello.c ----------------> hello(可执行文件) -----------> ./hello | | x86 C库:比如:printf 链接C库 inux内核开发——驱动 Text123456编程思路: (交叉编译器---可以把程序编程成指定平台的程序 ------> ./hello ARM) 编译:交叉编译器 加载hello_drv.c ------------------------>hello_drv.ko ...