目录
前言
linux下gdb调试程序操作过程参考本人文章:gdb调试操作; 这里不再叙述;
本文主要内容是介绍GDB本地调试的底层调试原理,我们来看一下GDB是通过什么机制来控制被调试程序的执行顺序;
总结部分是断点调试的底层原理,可以直接跳转过去先看看大概框架!
本地调试
本地调试:调试程序和被调试程序运行在同一台电脑中。
远程调试
远程调试:调试程序运行在一台电脑中,被调试程序运行在另一台电脑中。
关于可视化调试程序并不是重点,它只是一个用来封装GDB的外壳而已,我们通过它和gdb调试程序交互。
我们既可以用黑乎乎的终端窗口来手动输入调试命令;也可以选择集成开发环境(IDE),这个IDE中已经嵌入了器调试,
GDB调试指令
随便贴几个指令,等会可以介绍到;
每一个调试指令都有很多的命令选项,例如断点相关的就包括:设置断点、删除断点、条件断点、临时停用启用等等。这篇文章的重点是理解gdb底层的调试机制,所以应用层的这些指令的使用方法就不再列出了,网络上的资源很多。
GDB与被调试程序之间的关系
为了方便描述,先写一个最最简单的C程序:
#include <stdio.h>
int main(int argc, char *argv[])
{
int a = 1;
int b = 2;
int c = a + b;
printf(<