#### 安裝
```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文件,如下:

把-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算法
- 紅包金額分配