文章目录
1.debug和release
我们知道debug下才可以调试,release下是不可以调试的!
2.启动/退出gdb
3.gdb常用命令
3.1 查看代码(list)
3.2 运行(r)
3.3 其他命令
大家可以自行练习,这里就不再展示
1.list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。
2.list/l 函数名:列出某个函数的源代码。
3.r或run:运行程序。
4.n 或 next:单条执行。
5.s或step:进入函数调用
6.break(b) 行号:在某一行设置断点
7.break 函数名:在某个函数开头设置断点
8.info break :查看断点信息。
9.finish:执行到当前函数返回,然后挺下来等待命令
10.print§:打印表达式的值,通过表达式可以修改变量的值或者调用函数
11.p 变量:打印变量值。
12.set var:修改变量的值
13.continue(或c):从当前位置开始连续而非单步执行程序
14.run(或r):从开始连续而非单步执行程序
15.delete breakpoints:删除所有断点
16.delete breakpoints n:删除序号为n的断点
17.disable breakpoints:禁用断点
18.enable breakpoints:启用断点
19.info(或i) breakpoints:参看当前设置了哪些断点
20.display 变量名:跟踪查看一个变量,每次停下来都显示它的值
21.undisplay:取消对先前设置的那些变量的跟踪
22.until X行号:跳至X行
23.breaktrace(或bt):查看各级函数调用及参数
24.info(i) locals:查看当前栈帧局部变量的值
25.quit:退出gdb
4.进程
4.1 进程的概念
操作系统的组成:
进程的组成:
Linux中的进程:
4.2 查看进程及进程的pid
查看进程:
进程的信息还可以通过 /proc 系统文件夹查看
如:要获取PID为1的进程信息,你需要查看 /proc/1 这个文件夹
ls /proc/1 -d
查看pid:
4.3 杀死进程及ppid(父进程)
杀死进程的两种方式:
①ctrl+c
②kill -9 pid号
4.4 创建一个进程(fork)
fork使用示例:
fork实现不同进程同时运行:
一次创建多个进程:(多进程创建)
时间片的概念
假设有一个进程的时间片是2ms,那么这个程序要是在2ms内运行完成那么就没事,如果超过2ms,那么操作系统就会将这个程序从CPU上拿下来!然后放到程序队列的尾部,执行下一个进程!
4.5 进程路径
4.6 PCB/task_ struct内容、进程状态
task_ struct内容分类:
①标示符: 描述本进程的唯一标示符,用来区别其他进程。 (pid,ppid)
②状态: 任务状态,退出代码,退出信号等。
③优先级:相对于其他进程的优先级。
④程序计数器: 程序中即将被执行的下一条指令的地址。
⑤内存指针:包括程序代码和进程相关数据的指针,还有和其他进程共享的内存块的指针
⑥上下文数据:进程执行时处理器的寄存器中的数据[休学例子,要加图CPU,寄存器]。
⑦ I/ O状态信息: 包括显示的I/O请求,分配给进程的I/O设备和被进程使用的文件列表。
⑧记账信息: 可能包括处理器时间总和,使用的时钟数总和,时间限制,记账号等。
⑨其他信息
进程状态:
孤儿进程:
4.7 进程的阻塞和挂起、运行和切换
运行状态:
阻塞状态:
挂起状态:
进程的切换: