Linux调试器-gdb 与 冯诺依曼体系结构
1. 基本指令
(1). 程序发布有两种版本-debug和release。 Debug版本会添加调试信息, release版本会取消调试信息。
(2). Gcc/g++ 默认生成的可执行程序默认是release的. 为了 让其生成debug版本的可执行程序,可以加一个 -g 选项。 即: gcc -o test test.c -g
(3). 因此gdb只能对debug版本的进行调试
(4). Gdb的基本指令
1. l/list + 行号: 罗列10行,行号位置在罗列代码的中间位置
2. l/list + 函数名: 从函数头向下罗列10行代码(包括函数头)
3. r/run: 运行程序。 【相当于F5】
4. n/next: 单步调试。 【相当于F10】
5. s/step: 可以进入函数内部进行调试。 【相当于F11】
6. b/break + 行号: 在某一行打断点
7. b/break + 函数名: 在目标函数打断点。 【实际上在 函数名 的最开始的语句处打断点】
8. info b/break: 查看所有断点的信息。 断点的序号在一个调试周期中是递增的。
9. d 断点序号: 删除 对应序号的断点
10. d break 断点序号: 删除对应序号的断点
11. d break: 删除所有断点
12. disable 断点序号: 禁用对应断点
13. enable 断点序号: 启用对应断点
14. c/continue: 从当前位置执行到下一个断点处
15. p + 变量: 打印此时变量的值
16. p + 函数名: 打印 该函数的参数类型和返回值类型
17. finish: 执行到该函数停止
18. display + 变量: 监视一个变量。该变量会有一个对应的监视序号,该序号也是在一个调试周期中递增
19. undisplay + 监视序号:取消监视序号对应的变量
20. until + 行号: 运行到 目的行号 时停止
21. set var: 修改变量的值。 Eg: set var p = 10 , 这里将p修改为10
22. 条件断点:
(1). 直接创建条件断点: b + 行号 + if 条件
(2). 给已有的断点创建条件: condition + 断点序号 + 条件 【这里没有if,直接写条件】
2. 冯诺依曼体系
冯诺依曼体系结构图:
基本解释: