【Cowboy源码阅读-1】将Cowboy及其依赖下载到本地,方便调试

it2025-04-22  10

先配置好Erlang环境和rebar3,Erlang的版本可以稍微高一点,很多公司用的Erlang版本都非常的旧,太旧的版本可能无法编译cowboy,我用的是 10.5 版本。

windows系统配置rebar3可以参考我的另一篇博客:https://blog.csdn.net/yxw908186797/article/details/103192539

直接在rebar.config的deps中配置cowboy的话,代码都是从git上下载的,我们比较难对源码进行自己的修改、调试。 常规配置如下:

{deps, [ {cowboy, {git, "https://github.com/ninenines/cowboy.git", {branch, "master"}}}, ]}.

所以我是采用rebar3创建一个release项目,然后将cowbot及依赖的application进行手动的创建。 %%创建一个release rebar3 new release cowboy_dissect %%切换到 /cowboy_dissect/apps 目录再创建3个app %%创建各自的application rebar3 new app cowboy rebar3 new app cowlib rebar3 new app ranch

创建好application之后,就把git下载的源码中src目录下的erl文件都拷贝到自己创建的app的src目录下。

需要注意的是,cowlib需要特殊处理一下。因为cowlib包含两个头文件,所以需要修改cowlib目录下的rebar.config的erl_opts参数。

{erl_opts, [debug_info, {i, "./include"} ]}.

这时候返回release项目的根目录,执行cmd指令:rebar3 compile 就能编译了

启动的话,需要在自己的主application里的src,修改 cowboy_dissect.app.src 文件里面的 application 参数。依次加入 ranch,cowlib, cowboy

{application, cowboy_dissect, [{description, "An OTP application"}, {vsn, "0.1.0"}, {registered, []}, {mod, {cowboy_dissect_app, []}}, {applications, [ kernel, stdlib, ranch, cowlib, cowboy ]}, {env, []}, {modules, []}, {licenses, ["Apache 2.0"]}, {links, []} ]}.
最新回复(0)