准备Linux debug环境
笔者用的是centos 7
默认的编译套件即可
yum install cmake -y
yum install gcc-c++ -y
yum install gdb -y
yum install gdb-gdbserver -y
下载haproxy源码
GitHub - haproxy/haproxy at v1.0.0
使用haproxy的第一个版本,没有任何高级功能,方便入门
window环境和linux环境都下载haproxy源码
安装clion
从官网下载clion
CLion: A Cross-Platform IDE for C and C++ by JetBrains
linux开发环境启动gdbserver
在linux开发环境上编译haproxy
可以先看下haproxy的编译命令
CC = gcc
LD = gcc
COPTS = -O2 -g -DSTATTIME=0
LIBS =
# to compile under solaris, uncomment these two lines
#COPTS = -O2 -fomit-frame-pointer -DSOLARIS
#LIBS = -lnsl -lsocket
CFLAGS = -Wall $(COPTS)
LDFLAGS = -g
all: haproxy
haproxy: haproxy.o
$(LD) $(LDFLAGS) -o $@ $^ $(LIBS)
%.o: %.c
$(CC) $(CFLAGS) -c -o $@ $<
clean:
rm -vf *.[oas] *~ core haproxy test nohup.out gmon.out
分析 Makefile
gcc 编译参数:
-O2 是告诉 gcc 要进行优化 O是优化(Optimize) 2是优化等级
-g 是使生成的执行文件可以被 gdb 调试
-DSTATTIME=0 表示预定义宏STATTIME为0(不定义), -D 是预定义宏的选项
-Wall 表示开启所有警告(Warning)
- 编译第一个版本
make
- 修改haproxy配置
vim haproxy.cfg
listen http_proxy 0.0.0.0:3128
mode http
dispatch 127.0.0.1:8080
contimeout 3000
clitimeout 15000
srvtimeout 15000
maxconn 2000
retries 3listen health 0.0.0.0:3130
mode health
clitimeout 1500
srvtimeout 1500
maxconn 4
- gdbserver启动haproxy
gdbserver :1234 ./haproxy -f haproxy.cfg
配置clion
可以开始愉快的debug haproxy了