文章

tinyhttpd阅读之一

介绍

github上搜tinyhttpd,靠前的就两个项目:EZLippi-Tinyhttpdcbsheng-tinyhttpd

我这里就是下载了第二个cbsheng的,因为他注释比较多,哈哈。

该项目很适合初学者进行学习研究,所以废话不多说,把项目clone下来,进行debug吧。RamboQiu/tinyhttpd-Tutorial

##先把程序跑起来

1
2
3
tinyhttpd-Tutorial|master⚡ ⇒ make
tinyhttpd-Tutorial|master⚡ ⇒ ./httpd
httpd running on port 49535

index

输入blue颜色,点击提交,噶,一片空白,原因是mac系统的perl命令的文件路径错了。

进入color.cgi将/usr/local/bin/perl 改为/usr/bin/perl即可

1
2
-#!/usr/local/bin/perl -Tw
+#!/usr/bin/perl -Tw

重新编译运行

WechatIMG98

Debug

c项目头疼的就是没有直观的像是xcode一样的直接debug的能力,需要自己去集成。

项目源码猜测的是使用lldb或事gdb的形式进行调试的,因为没有看到.vscode或是cmakefile。这几种调试方式区别具体见:从开源项目重学C语言-vscode配置

引用:建议源码阅读顺序: main -> startup -> accept_request -> execute_cgi, 通晓主要工作流程后再仔细把每个函数的源码看一看。

screenshot-20210222-162445

相关配合资源下载

tlpi全称The Linux Program Interface,有中英文书籍,见百度网盘 密码: 24qj

本文由作者按照 CC BY 4.0 进行授权