#### 安装
```bash
#!/bin/bash
wget http://ftp.gnu.org/gnu/gdb/gdb-8.2.tar.gz
./configure
make && make install
gdb -v
```
#### 使用
单独编译c文件的时候需要加入调试信息,用-g
```bash
gcc -g test.c -o test
```
如果是php需要修改下Makefile文件,如下:
![](https://box.kancloud.cn/fbe7953a846e48ab59ac1853fa336ef7_811x129.png)
把-O2修改为-O
#### 命令
```bash
gdb -q # -q屏蔽显示版本之类的说明
file test # 运行编译后test文件
```
```bash
gdb php # 开始运行php
b main # 在main函数打上断点
r test.php # 运行test.php文件
```
- b <line_num|function_name> 打上断点(break 7 if n==6表示第七行条件n为6打上断点)
- l <start,end> list显示源代码
- n next下一行代码
- s step下一步代码
- c continue继续运行到下一个断点
- r run运行代码
- info b显示所有断点
- disable <num> 禁用断点
- delete <num> 删除断点
- p <var> print打印变量
- whatis <var> 显示变量类型
- q退出
#### 多进程调试
#### 多线程调试
[参考](https://www.cnblogs.com/life2refuel/p/5396538.html)
- php
- 编译安装
- 基本概念
- 垃圾回收机制
- 生命周期
- zval底层实现
- c扩展开发
- gdb调试工具
- 自定义扩展简单demo
- 钩子函数
- 读取php.ini配置
- 数组
- 函数
- 类
- yaf扩展底层源码
- swoole扩展底层源码
- memoryGlobal内存池
- swoole协程使用记录
- 单点登录sso原理
- compser使用
- session实现机制
- c & linux
- gcc
- 指针
- 结构体,联合和位字段
- 宏定义井号说明
- printf家族函数和可变参数
- 共享函数
- 静态库和动态库
- makefile自动化构建
- 信号一
- 信号二
- inotify监控文件事件
- socket编程
- 简介
- UNIX DOMAIN
- Internet DOMAIN
- TCP/IP
- 文件IO多路复用
- 内存管理
- 进程组,会话和控制终端
- daemon守护进程
- 多进程
- 多线程
- 常用进制转换
- go
- 入门知识
- 字节和整数装换
- python
- redis
- 应用场景
- 消息队列
- 热点数据
- 扫码登录
- 订阅发布
- 次数限制
- 抢购超卖
- 持久化机制
- mysql
- 工作流程
- MyISAM和InnoDB区别
- 用户和权限管理
- 执行计划
- sql优化
- 事务和锁
- 慢查询日志
- case...when...then...end用法
- sql
- 参考
- linux
- 内核参数优化
- 防火墙设置
- docker
- docker入门知识
- 算法
- 多维数组合
- DFA算法
- 红包金额分配