🐶博主主页:@ᰔᩚ. 一怀明月ꦿ
❤️🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++,linux
🔥座右铭:“不要等到什么都没有了,才下定决心去做”
🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀
目录
.gitignore配置文件
.gitignore配置在创建的git目录中
会拦截特定后缀的文件,这些文件就不会上传到本地仓库
例如
*后面的就是特定的后缀,只要带有这些后缀的文件都不会上传到本地仓库 [BCH@hcss-ecs-6176 linux-test-git]$ cat .gitignore # Prerequisites *.d # Object files *.o *.ko *.obj *.elf # Linker output *.ilk *.map *.exp # Precompiled Headers *.gch *.pch # Libraries *.lib *.a *.la *.lo # Shared objects (inc. Windows DLLs) *.dll *.so *.so.* *.dylib # Executables *.exe *.out *.app *.i*86 *.x86_64 *.hex # Debug files *.dSYM/ *.su *.idb *.pdb # Kernel Module Compile Results *.mod* *.cmd .tmp_versions/ modules.order Module.symvers Mkfile.old dkms.conf
调试代码的工具——gdb
GDB(GNU Debugger)是一个功能强大的调试器,用于调试程序,包括 C、C++ 等语言编写的程序,和我们在vs中调试的功能是一样的。
编译程序时启用调试信息:在编译程序时,使用
-g
选项启用调试信息,例如:gcc -g -o program program.c 必须在编译时,加上-g的选项,这样可以改成debug版本,因为我们编译时默认版本时release版本 release不可调试,debug可调式,如果想要让你的程序被调试,必须加上 -g以debug方式发布!
启动 GDB:在终端中输入以下命令启动 GDB,并指定要调试的程序名称
gdb 可执行文件
查看代码:
l
设置断点:在代码中设置断点以暂停程序执行,并查看状态。在 GDB 中,可以使用
break
(b)命令设置断点,例如:b number number是看在行号,每一个断点都有编号
删除断点
d 断点编号
查看断点
info b
运行调试
r
查看变量名和变量地址
(gdb) p i $3 = 21 (gdb) p sum $4 = 231 (gdb) p &sum $5 = (int *) 0x7fffffffe4dc 就是不能一直显示,只能显示当前查看的,不能动态变化
执行程序
n:逐过程 s:逐语句
display常显示查看变量名和变量地址
(gdb) display i 3: i = 21 (gdb) display sum 4: sum = 231 (gdb) display &sum 5: &sum = (int *) 0x7fffffffe4dc (gdb) n 8 sum+=i; 5: &sum = (int *) 0x7fffffffe4dc//最前面的5,就是条目编号 4: sum = 231 3: i = 22 (gdb) n 6 for(i=1;i<=total;i++) 5: &sum = (int *) 0x7fffffffe4dc 4: sum = 253 3: i = 22
Set var 变量=某个值:更改变量的值(有可能就会影响整个程序的运行结果)
总结:已经学习了yum、gcc/g++、vim、make/makefile、git、gdb六大工具
冯诺依曼体系结构
冯·诺依曼体系结构由以下五个主要组成部分组成:
1. 输入设备(Input Device):用于将外部数据或指令输入计算机系统,例如键盘、鼠标、扫描仪等。
2. 输出设备(Output Device):用于将计算机处理后的结果或数据输出给用户或其他设备,例如显示器、打印机、音频设备等。
3. 存储器(Memory):用于存储指令和数据。在冯·诺依曼体系结构中,指令和数据都以二进制形式存储在同一存储器中,并通过地址进行访问。
4. 运算器(Arithmetic Logic Unit, ALU):负责执行各种算术和逻辑运算。它能够对数据进行加、减、乘、除等数学运算,以及逻辑运算如与、或、非等。
5. 控制器(Control Unit):控制器是计算机的指挥中心,负责协调和控制计算机中各个组件的操作。它从存储器中获取指令,并按照指令的内容和顺序控制运算器和其他组件的工作。
这些组成部分共同协作,使得冯·诺依曼计算机能够接收输入数据,对其进行处理,然后将结果输出给用户或其他设备。这种体系结构的优点是结构清晰、易于设计和实现,并且具有良好的扩展性。
linux内核的代码是c语言写的,但是也有一部分汇编语言,x86、x64、AT&T(汇编语句)
存储器:内存
输入设备:键盘、话筒、摄像头、usb、鼠标/ssd、网卡、显卡等
输出设备:喇叭、打印机、磁盘、网卡、显卡等
计算机里面的几乎所有的设备,都有数据存储能力!
cpu这个设备,它的处理数据的速度是非常快的,然后是内存,然后是各种外设(磁盘)
磁盘(以前):是永久存储介质
存储分级
存储器分级通常包括以下几个层级:
1. 寄存器(Registers):寄存器是位于 CPU 内部的最快速、最小容量的存储器。它们直接与 CPU 相连,用于保存当前执行的指令和数据。由于寄存器直接嵌入到 CPU 中,其访问速度非常快。
2. 高速缓存(Cache):高速缓存位于 CPU 相对较近的位置,用于存储最频繁使用的指令和数据。高速缓存分为多级,如 L1 缓存、L2 缓存等,其中 L1 缓存距离 CPU 最近,速度最快,但容量较小;L2 缓存则较远离 CPU,容量较大但速度稍慢。高速缓存的目的是减少来自主存储器的访问次数,从而提高数据访问速度。
3. 主存储器(Main Memory):主存储器存储计算机正在执行的程序和数据。通常用随机存取存储器(Random Access Memory, RAM)来实现,其容量较大但速度相对较慢。主存储器是计算机系统中的核心组件之一。
4. 辅助存储器(Secondary Storage):辅助存储器通常指硬盘驱动器(Hard Disk Drive, HDD)、固态驱动器(Solid State Drive, SSD)等外部设备。辅助存储器的容量更大,价格更低,但速度比主存储器慢得多。它主要用于长期存储数据和程序,以及作为主存储器的扩展。
存储器分级的设计原则是在不同层级之间根据访问速度、容量和成本进行折衷。快速的存储器层级用于保存最频繁使用的数据,而较慢但容量更大的层级用于存储整体数据集。这种分级能够提高数据访问效率,同时降低成本。
🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸