HAProxy

HAProxy源码探索(3):使用gdb进行调试

2018-12-28  本文已影响0人  chenj23986526

回顾

上一篇我们尝试编译运行了HAProxy的第一个版本(v1.0.0)
我们发现代码结构很简单就一个haproxy.c,里面也就3000行代码
接下去我们会尝试用gdb调试一下这个版本

安装 gdb

sudo apt install gdb

gdb 启动 HAProxy

我们之前的执行方式是 ./haproxy -f haproxy.cfg
现在我们使用 gdb 启动 gdb --args ./haproxy -f haproxy.cfg

接下来我们就可以输入命令操控 gdb 了,详细操作请输入 help 查阅
首先 start,得到断点在第2965行停止,查看源码,这里就是 main 函数的起点

int main(int argc, char **argv) {
    init(argc, argv);

    if (mode & MODE_DAEMON) {
    int ret;

    ret = fork();

    if (ret > 0)
        exit(0); /* parent must leave */
    else if (ret < 0) {
        Alert("[%s.main()] Cannot fork\n", argv[0]);
        exit(1); /* there has been an error */
    }

    /* detach from the tty */
    close(0); close(1); close(2);
    setpgid(1, 0);
    }

    signal(SIGQUIT, dump);
    signal(SIGUSR1, sig_soft_stop);

    /* on very high loads, a sigpipe sometimes happen just between the
     * getsockopt() which tells "it's OK to write", and the following write :-(
     */
    //20011216//signal(SIGPIPE, SIG_IGN);

    if (start_proxies() < 0)
    exit(1);

    select_loop();

    exit(0);
}

调试的过程中有许多技巧,比如

切换以上2个模式后,几乎可以和图形界面有差不多的调试体验了

上一篇下一篇

猜你喜欢

热点阅读