美文网首页HAProxy
HAProxy源码探索(3):使用gdb进行调试

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

作者: chenj23986526 | 来源:发表于2018-12-28 00:07 被阅读0次

    回顾

    上一篇我们尝试编译运行了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);
    }
    

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

    • ctrl+x a 切换到 UI模式
    • ctrl+x s 切换到单键模式

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

    相关文章

      网友评论

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

        本文链接:https://www.haomeiwen.com/subject/ypxnkqtx.html