目录

视频链接:13_软硬链接_哔哩哔哩_bilibili

注:命令操作中的文件名,若是当前文件夹下的文件,可不加路径,若是其他文件夹下的,要添加路径。

1. 命令解析器:shell

2. Linux 快捷键

3. Linux系统目录结构:

4. 用户目录:

5. 文件和目录操作

6.用户权限,用户和用户组

7.压缩包的管理

8.软件的安装与卸载

9.vim的使用

10.gcc的使用

11.库的介绍

12.makefile

13.gdb的使用


视频链接:13_软硬链接_哔哩哔哩_bilibili


注:命令操作中的文件名,若是当前文件夹下的文件,可不加路径,若是其他文件夹下的,要添加路径。

1. 命令解析器:shell

shell -- unix操作系统
        bash -- Linux操作系统
    本质: 根据命令的名字, 调用对应的可执行程序,shell就是将命令翻译为内核可执行的指令。

2. Linux 快捷键

1>. 命令和路径补齐:  tab
 2>. 主键盘快捷键:
       1). 历史命令:
            历史命令:        history
            向上遍历:        方向上
            向下遍历:        方向下
      2). 光标移动:
            向左:        ctrl+←
            向右:        ctrl+→
            移动到头部:    ctrl+a
            移动到尾部:    ctrl+e
     3). 删除字符:
          删除光标前边的字符:    ctrl+h   /   backsapce  
          删除光标后边的字符: ctrl+d / delete
          删除光标前的所有内容: ctrl+u​

3. Linux系统目录结构:

1>. /  根目录: 
        2>. /bin:        可执行二进制文件,shell命令就在这个文件夹下。

3>. /boot:        Ubuntu内核和启动文件/boot Ubuntu内核和启动文件 
        4>. /dev:         外部设备的驱动文件。
        5>. /etc:         存放一些系统配置文件,比如用户账号和密码文件,各种服务的起始地址
        6>. /home:    存放所有用户的主目录,当前系统下的所有用户。
        7>. /lib:        系统最基本的动态链接共享库,几乎所有的应用程序都要用到
        8>. /media:    系统自动识别的一些设备,如U盘、光驱...
        9>. /mnt:        用户手动挂载外部设备时,可以选择挂载到mnt下

10> ./opt :        可选的文件和程序存放目录,给第三方软件放置的目录。
        11>. /root:        管理员文件

12>. /srv :        服务相关目录。比如网络服务。

13>  /sys         记录内核信息,虚拟文件系统。

14>./tmp:         临时目录

15>. /var:         存放一些变化的文件,比如日志文件

16 >   /sbin :        和/bin类似,也是存放一些二进制可执行文件。sbin下面的一般是系统开机过程中所需要的命令。是super bin,是管理员使用的程序
        17>. /usr:       存放于系统用户有关的文件,会占用很大的存储空间!类似于windows下的program files目录

18>.   /proc:   虚拟文件系统,数据放置到内存中,存放系统运行信息

4. 用户目录:

1>. 绝对路径: 从根目录开始写 /home/itcast/aa
         2>. 相对路径: bb 相对于当前的工作目录而言
                . -> 当前目录
                .. -> 当前的上一级目录
                - -> 在临近的两个目录直接切换 cd -
        3>. itcast@ubuntu:~$
                    itcast: 当前登录用户
                    @: at 在
                    ubuntu: 主机名
                    ~: 用户的家目录(宿主目录)
                    $: 当前用户为普通用户
                    #: 超级用户 -- root

5. 文件和目录操作

1> 查看目录下所有文件:

1) tree 文件夹路径(必须先install tree软件)

2)ls -a 文件夹路径(如果要显示当前目录下的文件,可不加路径):显示全部文件,包括隐藏
           3)  ls  -l  文件夹路径(如果......,可不....)   :  列表形式列出目录下文件,不包括隐藏

此时若显示目录文件,大小为4096,只是目录所占大小,并不包括目录下其他文件。

4)ls   -la : 列表形式列出目录下的全部文件,包括隐藏文件。 相当于 ll(L).

2> 进入某个目录

1) cd : 进入家目录

2)cd  - :返回上次的目录

3)cd .

4)  cd ..

5)  cd  绝对路径或相对路径 ;进入某个文件夹

6)pwd: 查看当前所在路径

3> 创建目录:

1)mkdir dirName

2)   mkdir dir/dir1/dir2 -p :多级目录

4> 删除目录:

1)rmdir  空目录: 删除空目录

2)rm -r 目录   (-r表示递归删除, 逐步进入目录进行删除) :  删除非空目录

3)rm -ri 目录  (会出现提示:是否删除...)

5> 创建文件

1)touch 文件名   文件名不存在,新建文件;文件名存在,修改文件最后操作时间

6> 删除文件

rm 文件名 /    rm -i  文件名 (提示是否删除)

7> 拷贝文件/目录

1)拷贝文件:  cp    源文件  目标文件  (目标文件不存在会自动创建,文件存在,则会 用 源文件中的内容覆盖掉原来的内容)
                2)拷贝目录:  cp   源目录   目标目录  -r(实现递归) (目标文件不存在会自动创建,存在,择把源目录增加到目标目录下)

3)拷贝文件到目录下:cp  源文件  目标目录(存在)

8> mv 原文件   目标文件

改名:mv file (存在)  file1(不存在):file 改名为file1

mv dir(存在)  dir1(不存在) :目录改名

移动:mv file(存在) dir(存在) : file 移动到dir 处

mv dir(存在) dir1 (存在)  :dir  移动到dir1下

mv file(存在)  file1(存在) :file的内容覆盖到fle1,file删除

9> 查看文件内容

1)cat  文件名 ;  (在终端不能全部显示,适合查看短小文件)
                  2)more 文件名: (可通过回车键显示下一行,按空格键翻页, 按q退出;ctrl+p往前翻页,ctrl+n往后翻页)
                  3)head   -n  文件名 (不写n默认显示前10行,写了n显示n行)
                  4)tail      文件名:显示后10行

10> 新建链接文件

1)软链接: ls -s  源文件路径  新文件名 (新的iinode,新文件中是源文件的路径,即源文件名,所以源文件路径是绝对路径时,可以把新文件移动到任何文件夹下都可访问该文件)

2)  硬链接:  ls  原文件名  新文件名 ( 共用inode,硬链接数加1)

6.用户权限,用户和用户组

1> 修改文件或目录权限  --chmod

1) 文字设定法

chmod  who[+|-=]mode  文件名

who : u -user, 文件所有者

g - group, 文件所属组

o - other ,其他人

a -all ,所有人(不写who表示默认)

mode: w / r / x/ -   ,写/读/执行/无任何权限

例:file文件所有者和其他人减去读写权限:  chmod  uo-wr  file

file文件所有者加上读权限,其他人加写权限,chmod u+r,o-w file

2) 数字设置法

421:分别表示读写执行,

chmod 0文件所有者权限数字 同组用户全新数字 其他用户权限数字  file

例:chmod  0777 file

chmod -440 file  : 文件所有者和同组用户减去了读权限,其他不变

2> 修改文件所有者或所属组  -chown

1)修改所有者:chmod 新的所有者  文件名

2)修改所有者,所有组:chmod 新的所有者 新的组  文件名

注:在etc/passwd 文件下查看所有用户

3> 文件查找和检索

1)根据文件属性查找  -find

文件名 :        find 查找的目录  -name  "查找的文件名"

文件类型:     find 查找的目录 -type 文件类型

文件类型(7种): f / d / l / c / b / p / s /  f普通文件

文件大小:       find 查找的目录 -size  10k / -10k /+10k

+: 大于, 如大于10k ,+10k

-:小于, 如小于10k ,-10k

等于:如等于10k, 10k

单位是k必须小写,单位是M,必须大写。

例:查找家目录大于10k,小于100k, find ~ -size  +10k -size  -100k

按日期:  创建日期:find -ctime -n/+n , 例查找一天以内的, find -ctime -1

修改日期:find -mtime -n/+n

访问日期:find -atime -n/+n

-n: n天以内

+n: n天以外

深度:    find   要查找的目录/  -maxdepth n (层数): 最多搜索n层

find   要查找的目录/  -mindepth n (层数)  :最少搜索n层

高级查找:   例:查找指定目录,并列出该目录中的文件详细信息

如:  find ./ -type d -exec ls -l {} \ ;

find ./ -type d -ok ls -l {} \ ; //ok比较安全,每次查找都会询问,需要输入y或n

find ./ -type d |  xargs ls -l (shell命令)

2)根据文件中内容查找  -grep -r / -w /......

grep -r (搜索路径有目录时要加,-r表示递归)   ”查找的内容“  搜索的路径

例:家目录下,哪个文件中包含helloworld 字符串的文件,    grep -r "hello world" ~  -n(加上会显示行号)

3) 总结:

find 搜索的路径  -属性类型 属性值

grep 搜索的内容 搜索的路径

7.压缩包的管理

1> linux下常见压缩包的格式

gz -- gzip

bz2--bzip2

2>常用压缩命令

1)  tar - 打包

参数: c  - 创建压缩文件

x - 释放压缩文件

v - 打印提示信息

f - 指定压缩包的名字

z - 使用gzip方式压缩文件            -xxx.tar.gz   用tar进行了打包,然后用gzip方式进行了压缩

j - 使用bzip2的方式压缩文件

压缩:tar 参数  压缩包名字  原材料(可多个目录或文件)。  例:以gz方式压缩:tar  zcvf  test.tar.gz  file dir

解压缩:解压到当前文件夹下  tar 参数 压缩包的名字 。例:tar zxvf test.tar.gz

解压到指定文件夹下   tar  参数  压缩包的名字  -C 指定路径。 例: tar zxvf test.tar.gz  -C dir

2) rar:使用前需要先安装 sudo apt-get install rar

压缩:          rar a 压缩包名 (不用指定后缀) 压缩内容

解压缩:      rar x 压缩包名  解压目录

3)  zip/unzip

压缩:    zip 参数 压缩包名(不用指定后缀)  原材料

参数     有目录: -r

解压缩:unzip 压缩包的名字  -d  解压缩目录

练习:1.写出命令查找宿主目录下小于10M大于100k的文件,并将详细信息列到某个目录下

find ~ -size +100k -size -10M | xargs ls -l  > file

2.写出查找目录下含有字符串helloworld的文件,并显示行号

grep -r "helloworld" ~ -n

8.软件的安装与卸载

        1.在线安装

            安装命令:  sudo   apt-get install 安装包的名字

卸载命令: sudo apt-get remove 软件的名字

软件列表的跟新:sudo apt-get update

清除缓存:sudo apt-get clean

安装命令执行后,会把安装包先下载到 /var/cache/apt/archives, 然后进行安装。清除缓存便是清除该目录下的安装包

安装包格式: xxx.deb

        2. 软件安装(ubuntu下的.deb)

             安装:sudo dpkg -i xx.deb

卸载:sudo dpkg -r 软件的名字

3.源码安装

一般这种源码目录下会有readme,根据里边的命令进行安装

9.vim的使用

1> 命令模式

保存退出:ZZ

对齐操作:gg=G

光标的移动:

上下左右:                        k j h l

光标移动到行首:            0

光标移动到行尾:            $

光标移动到文件首部:     gg

光标移动到文件尾部:     G

光标移动到某行:            nG

删除:

删除光标前字符:X

删除光标后字符:x

删除光标后一个单词全部字符:dw

删除光标后全部字符:d$ / D

删除光标前全部字符:d0

删除当前行:dd

删除n行:ndd (从光标开始记起的n行)

撤销操作:u

反撤销:ctrl + r

复制黏贴和替换:

复制:yy

nyy:n表示数,复制n行

黏贴:p 黏贴在光标所在位置的下一行

P 黏贴在光标所在位置的上一行

替换:

替换一个字符:按下r,然后在按下要替换的字符

替换多个字符:按下R,然后在按下要替换的字符,实现替换

可视模式:v ,上下左右相当于windows系统下按鼠标选择

复制:y

删除:d

黏贴:p   黏贴到光标后面;P黏贴到光标前面

查找/搜索:

在命令模式下:

1)从当前位置向下查找;输入/xxx   然后按回车,按n切换到查找到的下一个,N切换到查找到的上一个

2)从当前位置向上查找;输入?xxx   然后按回车,按n切换到查找到的上一个,N切换到查找到的下一个

3)查找一个单词,将光标移动到要查找的单词处,然后按#,然后用n/N切换

函数查找:

k

精确定位:章节号K

man 章节数  要查找的内容

1   可执行程序或 shell 命令
                       2   系统调用(内核提供的函数)
                       3   库调用(程序库中的函数)
                       4   特殊文件(通常位于 /dev)
                       5   文件格式和规范,如 /etc/passwd

2> 文本编辑模式

a: 从光标后开始插入

A:从光标所在的行最后面开始插入

i:  从光标前开始插入

I:从光标所在行首开始插入

o: 光标所在的下一行开始插入

O:光标所在的上一行开始插入

s: 删除光标所在的字符,开始插入

S:删除光标所在的行,开始插入

3> 末行模式

:+ 内容

1)  保存&退出

:数字n       :   跳转到n行

:q!             :退出不保存

:wq / x      : 退出并保存

:q              : 退出

:w             : 保存不退出

2)替换

:s/A/B          ---->  把所在当前行的第一个A 替换 为 B

:s/A/B/g       ---->  把所在当前行的所有的A 替换 为 B

:s/A/B/gc      ---->  把所在当前行的所有的A 替换 为 B, 每个替换前都会询问是否替换,

:m,n/A/B/g    ---->  把m到n行所有的A 替换 为 B

:m,n/A/B/gc   ---->  把m到n行所有的A 替换 为 B, 每个替换前都会询问是否替换,

:%S/A/B/g    ---->  把该文本下所有的A 替换 为 B

:%S/A/B/gc    ---->  把该文本下所有的A 替换 为 B ,每个替换前都会询问是否替换,

3)分屏

:sp                 ----> 横向分分1个屏出来,此时屏数为n+1,n为分屏前数目

:vsp               ----> 竖向分分1个屏出来,此时屏数为n+1,n为分屏前数目

:vsp  xxx        ----> 新的竖屏打开xxx文件

:q                   ----> 退出光标所在屏分屏

ctrl+ww         ----> 按两次实现光标在屏幕间切换

:qall               ----> 退出所有屏分屏

:wall               ----> 保存所有屏修改

:wqall               ----> 保存退出所有屏修改

注:在终端用vim打开文件时,输入命令vi -O xxx   xxxx xx  ----> 以竖屏方式打开这几个文件

在终端用vim打开文件时,输入命令vi -o xxx   xxxx xx  ----> 以横屏方式打开这几个文件

末行模式下执行shell,:! shell命令

4)

1.多行注释:

1. 首先按esc进入命令行模式下,按下Ctrl + v,进入列(也叫区块)模式;

2. 在行首使用上下键选择需要注释的多行;

3. 按下键盘(大写)“I”键,进入插入模式;

4. 然后输入注释符(“//”、“#”等);

5. 最后按下“Esc”键。 注:在按下esc键后,会稍等一会才会出现注释,不要着急~~时间很短的

2.删除多行注释:

1. 首先按esc进入命令行模式下,按下Ctrl + v, 进入列模式;

2. 选定要取消注释的多行;

3. 按下“x”或者“d”. 注意:如果是“//”注释,那需要执行两次该操作,如果是“#”注释,一次即可

10.gcc的使用

1> gcc的工作流程( 整个过程中编译最为耗时)

1) 预处理:    -E  文件格式转换 xxx.c -> xxx.i (仍然是c文件)

工具: gcc调用 预处理器 cpp 完成

任务:宏替换;头文件展开;注释去掉;

2) 编译:        -S  文件格式转换 xxx.i -> xxx.s

任务:高级语言转换为汇编语言

工具: gcc完成

3) 汇编:        -c   文件格式转换 xxx.s -> xxx.o

任务:汇编转换为机器语言

工具:gcc调用 汇编器 as  完成

4) 链接:       不需要参数          xxx.o -> xxx(可执行的)

工具:gcc调用 链接器 ld  完成

2> gcc常用参数

-v/--vision   :  查看版本

-I                :  指定头文件的路径。使用场景:当.c文件中包含的头文件路径不在同一文件夹下,可通过-I 指定路径

-c               :  j将汇编文件生成二进制文件,得到1个.o文件

-o               : 指定生成的可执行文件文件的名字

-g               : gdb调试的时候加

-D               : 在编译的时候指定一个宏 ,例gcc example.c -D debug  -o example .相当于在.c文件中添加了#define debug

-wall           : 添加警告信息

-On            : 优化代码,n是优化级别:1 ,2,3

11.库的介绍

1.库是什么?

库是二进制文件xxx.o; 将源代码.c  或 .cpp  ---->二进制的源代码;  将源代码加密

2.库制作出,如何给用户使用?

将头文件和制作出的库提供给用户

3.静态库的制作和使用 (windows下xxx.lib ,    linux下是 xxx .a)

1> 命名规则:libxxx.a

xxx: 用户自己定义,库的名字

2> 制作步骤:

原材料: 源代码.c  .cpp

.c生成.o :  生成二进制文件,gcc  xx.c  -c

将.o打包 :  ar rcs libxxx.a  原材料(xx.o)

3>库的使用:

1)将头文件和二进制的库文件提供给用户。

2)用户调用时在程序中包含头文件

3)gcc编译时 gcc xxx.c  -I(大i)   头文件路径   -L  静态库路径   -l(小L) 静态库的名字(掐头去尾,只要xxx)-o x

例: gcc test.c -I  ./include   -L ./lib  -l mycal  -o app

4.动态库的制作和使用 (windows下xxx.dll ,    linux下是 xxx .so)

1>命名规则:libxxx.so,     xxx: 用户自己定义,库的名字

2>制作步骤:1)将原材料(.c)生成.o      gcc 原材料(xx.c)  -c -fpic

2) 将.o 打包为.so           gcc -shared -o libxxx.so   原材料(xx.o )

3> 库的使用:1)提供头文件a.h,和库文件libtest.so给用户

2)用户调用时在程序中包含头文件

3)gcc编译时 gcc xxx.c  -I(大i)   头文件路径   -L  动态库路径   -l(小L) 动态库的名字(掐头去尾,只要xxx)-o x

4>解决动态库执行./x时出现报错:

对于 elf 格式( gcc生成的可执行文件都是elf格式)的可执行程序,库文件加载是由ld-linux.so*(动态加载器)来完成的,它先后搜索elf文件的DT_RPATH段 —— 环境变量LD_LIBRARY_PATH —— /etc/ld.so.cache文件列表 —— /lib/, / usr/lib  目录找到库文件后将其载入内存。

注: ldd  可执行程序:查看可执行程序运行时需要哪些库。

1)报错原因:动态加载器在DT_RPATH、LD_LIBRARY_PATH 、/etc/ld.so.cache、 /lib/, / usr/lib 没有加载到需要的动态库

2)解决方法:可在LD_LIBRARY_PATH 、/etc/ld.so.cache的路径下添加动态库路径

(1)使用环境变量:

1. 临时设置(关掉终端后会失效)

在终端输入:export LD_LIBRARY_PATH=动态库的路径

上述写法会覆盖  LD_LIBRARY_PATH  中的内容,可将其更改为

export    LD_LIBRARY_PATH =  动态库的路径 : $  LD_LIBRARY_PATH

:表示拼接,$ 表示取内容。

2 .永久设置

(1)用户级别 (设置完成后只针对于当前用户生效)

~./.bashrc ,在这个文件下添加   export LD_LIBRARY_PATH=动态库的路径: $  LD_LIBRARY_PATH

配置完成后:(1)重启终端  或  (2)输入命令 source ~/.bashrc。目的是为了刷新~./.bashrc

(2)系统级别  (设置完成后针对于全部用户生效)

/etc/profile , 在这个文件下添加 export LD_LIBRARY_PATH=动态库的路径: $  LD_LIBRARY_PATH

配置完成后:(1)重启虚拟机  或  (2)输入命令 source  /etc/profile。目的是为了刷新profile

(2)更新文件列表 /etc/ld.so.cache

1. 首先找到一个配置文件 /etc/ld.so.conf, 把动态库的绝对路径添加到文件中

2. 执行一个命令,sudo idconfig -v (参数-v可不加)

3. 知识点拓展:系统调用 dlopen   dlclose  dlsym

5. 静态库动态库的工作原理和优缺点

1.静态库的优缺点

静态库生成过程 :

优点:静态库被打包到应用程序中(调用程序和被调用函数打包为一个程序),加载速度快

发布程序无需提供静态库,移植方便

缺点:消耗系统资源,浪费内存(多个程序包含相同的库,当它们加载进内存执行时,内存中有多个相同的库,浪费内存)

更新、部署、发布需要重新生成,麻烦。

2. 动态库的优缺点

优点: 可实现进程间资源共享,可共享一个动态库

程序升级简单

程序员可控制何时加载动态库 (使用 dlopen   dlclose  dlsym )

缺点:加载速度比静态库慢

发布程序需要提供依赖的动态库

12.makefile

1. make

gcc   ——编译器,

make ——linux自带的构建器,构建的规则在makefile中。make命令执行后,会根据makefile构建的规则执行gcc

2. 命名规则

makefile、Makefile

3. makefile编写的规则

- 三部分:目标、依赖、命令

目标:依赖

(tab缩进)命令   (命令可以没有目标和依赖)

- makefile中由一条或多条规则组成

4.  makefile的编写

1> 第一个版本

app:main.c add.c sub.c mul.cgcc main.c add.c sub.c mul.c -o app

缺点: 效率低,修改一个文件,所有文件都会被重新编译

2>第二个版本

app:main.o add.o sub.o mul.ogcc main.o add.o sub.o mul.o -o appmain.o:main.cgcc  main.c -c
add.o:add.cgcc  add.c -c
sub.o:sub.cgcc  sub.c -c
mul.o:mul.cgcc mul.c -c

makefile的工作原理:

检查依赖是否存在,如果不存在向下搜索下边的规则,如果有规则是用来生成查找的依赖的,执行规则中的命令。                                                                         如果存在,则会对比依赖和目标的时间,若目标的时间比依赖的早,则会重新生成目标

缺点:冗余

3> 第三个版本:

1) 自定义变量:obj=a.o b.o c.o

变量的取值:aa = $(obj)

2) makefile自带的变量:大写

CPPFLAGS:(是预处理的时候需要加的参数)。

赋值:CPPFLAGS=

CC

3)自动变量:(只能在规则的命令中使用)

$@: 规则中的目标

$<:规则中的第一个依赖

$^: 规则中所有的依赖

obj=main.o add.o sub.o mul.o
target=app$(target):$(obj)gcc $(obj) -o $(target)#模式匹配
%.o:%.cgcc -c $< -o $@

缺点:可移植性差

4> 第四个版本:

1)使用makefile中的函数(makefile中所有的函数都有返回值)

(1)查找指定目录下指定类型的文件

src=$(wildcard ./*.c): 搜索当前目录下所有.c类型的文件,搜索到的字符串保存在src变量里

(2)匹配替换

obj = $(patsubst %.c,%.o, $(src)) : 将所有的.c文件后缀替换为.o文件,.c文件是src下的文件;返回的字符串保存在obj

src=$(wildcard ./*.c)
obj=$(patsubst %.c %.o $(src))
target=app$(target):$(obj)gcc $^ -o $@%.o:%.cgcc -c $< -o $@

缺点: 不能清理项目

5> 第五个版本

1) 让make生成不是终极目标的目标

(1)编写一个清理项目的规则

#语法规则
目标名:命令例:
clean:    rm $(obj) $(target) -f #-f表示强制删除#或-rm $(obj) $(target) #rm前面加-表示rm执行失败,向下执行其他命令#当clean受到目录下相同名称文件的影响,可用伪目标来解决
.PHONY:clean
clean:rm $(obj) $(target) -f #-f表示强制删除

执行:make 目标名。如:make clean

13.gdb的使用

1.生成可调试的可执行程序

gcc 原材料 -o 可执行程序 -g   -g会保留函数名和变量名。   例:gcc a.c b.c -o app -g

2.启动gdb

gdb  可执行程序,例gdb app

可执行程序若带参数,传参命令 set args xxx xxx

3.查看源代码

l = list

l 默认显示main函数下的代码
show listsize 查看 list 默认显示的行数
set listsize n 设置list 默认显示的行数为 n 行
l   行号 显示该行附进的代码
l  函数名 显示该函数的代码
l 文件名 :行号 显示该文件下该行的代码
l 文件名 :函数 显示该文件下该函数的代码

4.设置断点

b b  n (行号) 在第n行设置断点  break
b 函数名    在该函数处打断点
b 文件名:行号
b 文件名:函数名 

b n if 变量== val

例 b 17 if i==val

设置条件断点
i i  b    查看设置的所有的断点 info 
d

d num(断点编号)

 删除第num个断点 delete
d num1 num2 .....  删除num1,num2....的断点
d num1 - num6    删除num1-num6之间的所有断点 
dis

dis num

设置第num个断点无效 disable
dis num1 num2 .....  设置num1,num2....的断点无效
dis num1 - num6    设置num1-num6之间的所有断点 无效  
ena

ena num

设置第num个断点生效 enable
ena  num1 num2 .....  设置num1,num2....的断点生效
ena num1 - num6  设置num1-num6之间的所有断点生效

5.调试命令

enter键 默认执行上一次输入的命令
r 运行到第一个断点处停止 run
start 运行到main入口,即 { 处
n 单步运行,遇到函数跳过 next
s 进入函数内 step
finish 退出函数
当函数中无有效断点或无断点才有效
c 全速运行 continue
until 退出循环
当函数中无有效断点或无断点才有效
q 退出调试
p 变量名 打印当前变量的值
ptype 变量名 查看变量的类型
display 变量名 每次停止,显示该变量的值
i display  查看所有自动显示的变量
undisplay num  取消第num 个变量的自动显示
set var  变量名=val     调试过程中,如果在循环内打了断点:当i=5时下

14.标准c库函数和linux系统函数的区别

通过文件描述符找到 inode 节点,从而在外存找到文件

内核缓冲区默认是8k,其大小可以修改;有了缓冲区后,缓冲区与外存硬盘只交换一次数据。

15.虚拟地址空间

1.用户区

虚拟地址空间,不是物理内存上的空间,而是磁盘上的。程序运行时,通过MMU将虚拟地址映射到物理内存上。

2.内核区

文件描述符:寻找磁盘文件

黑马服务器开发之linux基础编程视频——笔记相关推荐

  1. Android NDK开发之 NEON基础介绍

    原文:http://blog.csdn.net/app_12062011/article/details/50434259 Android NDK开发之 NEON基础介绍 这是官方介绍: http:/ ...

  2. ios开发之OC基础-类和对象

    ios开发之OC基础-类和对象 本系列的文章主要来自于个人在学习前锋教育-欧阳坚老师的iOS开发教程之OC语言教学视频所做的笔记,边看视频,边记录课程知识点.建议大家先过一遍视频,在看视频的过程中记录 ...

  3. python运维开发之socket网络编程01

    python运维开发之socket网络编程01说明:本文来自来自北京老男孩linux运维实战培训中心-运维开发课程免费视频内容,本文内容为系列内容,更多分享信息见:http://oldboy.blog ...

  4. python开发之Socket网络编程

    python开发之Socket网络编程 一.SOCKET基础 二.SOCKET通信流程 1. 流程描述: 2. 相关方法及参数介绍: 三.实例(屌丝追女神的故事) 1. 故事1:(一次通信) 2. 故 ...

  5. 最全的linux基础学习视频

    最全的linux基础学习视频,千锋教育的Linux视频课程免费下载地址: http://pan.baidu.com/s/1c13ddvE,更多精彩的视频在不断的更新中,OpenStack覆盖了网络.虚 ...

  6. C#进行MapX二次开发之MapX基础知识

    C#进行MapX二次开发之MapX基础知识 MapX的主要技术特点 (1). 以表(Table)的形式组织信息 每一个表都是一组MapInfo文件,这些文件组成了地图文件和数据库文件.为使用MapIn ...

  7. Java游戏服务器开发之A星算法

    Java游戏服务器开发之A星算法    学习这个主要是用于寻路算法.    参考资料主要是siki学院的视频,A计划--人工智能--A星算法. 网址http://www.sikiedu.com/cou ...

  8. android语音播放工具类,Android开发之MediaPlayer多媒体(音频,视频)播放工具类

    本文实例讲述了Android开发之MediaPlayer多媒体(音频,视频)播放工具类.分享给大家供大家参考,具体如下: package com.android.imooc.chat; import ...

  9. 高性能服务器开发之C++定时器

    高性能服务器开发之C++定时器 来源: https://www.cnblogs.com/junye/p/5836552.html 写这篇文章前搜了下网上类似的文章,有很多,所以笔者的这篇文章就不对定时 ...

最新文章

  1. 《卫报》长文解读机器的崛起:人类越来越无法掌控它们
  2. Windows Service:用C#创建Windows Service
  3. c++ mysql 配置_C++--mysql相关配置
  4. 一直在构建工作空间_大华股份殷俊:AI,构建数字世界的基础
  5. [翻译] .NET Core 3.0 Preview 9 发布
  6. [渝粤教育] 西南交通大学 信号与系统A 参考 资料
  7. 2019年技术盘点云数据库篇(二):阿里云携手MongoDB率先上线4.2数据库 云上数据库已是大势所趋...
  8. 去除非ascii字符以及ascii中的控制符
  9. Rust : Tonic 基于Rust的gRPC实现
  10. PDF文档翻译(英文翻译为中文)
  11. Python入门必学,用Python练习画个美队盾牌
  12. 火狐浏览器打印时会出现边框线不显示(缩放页面也会出现)
  13. 广东省污水处理厂数字孪生平台建模_三维可视化平台_吉优赛维数字孪生_三维激光扫描_BIM建模
  14. 2022大三计算机 | 保研机试 | 学习路线
  15. 这份新年豪礼面试锦囊,真舍不得给你们!
  16. javaweb总——注:跟着狂神学的
  17. Shader 轮廓线(描边)总结
  18. 校园上网神器:猎豹免费WiFi2.0
  19. 小技巧 - 微信零钱转出免手续费方法(利用零钱通转出)
  20. iOS5打电话没声音,别人打进来没反应

热门文章

  1. chapter8——消抖技术
  2. agx 刷机+系统迁移至SD/m2+pytorch+Eigen3.3.7配置教程
  3. mysql repair 所有表_MySQL磁盘满repair多个表问题的解决
  4. 【自学编程】C语言编程简单的小程序,计算长方体体积!
  5. 我是怎么从安卓到php再成为前端开发工程师的
  6. 第五章 CSS美化网页元素
  7. 大板加腋 弹性板6计算_加腋大板楼盖计算方法浅析
  8. 北京卫星地图 百度卫星地图高清版(含道路地名标签叠加)
  9. 《高质量读研:教你如何写论文、做科研》- 张军平
  10. 写综述前应如何快速、高效地阅读相关文献?