mediasoup-demo编译debug版本worker带pdb

无论是Windows还是Linux平台,都是先按常规的步骤部署mediasoup-demo。简单来说分以下四步:

  1. 部署node.js环境
  2. 拉取GitHub - versatica/mediasoup-demo: mediasoup official demo application
  3. 进入server目录执行npm install
  4. 进入app目录执行npm install
  5. 复制config.example.js为config.js,修改配置

如果上述步骤都可以成功完成,那么再来做编译debug的worker的步骤

修改和构建步骤:

进入server\node_modules\mediasoup\目录,mediasoup-worker的源码就在这里,在npm install的过程中生成的mediasoup-worker.exe,在out\Release里面。生成过程中的obj等的文件,在npm install完成之后就删除了。

需要修改的是3个文件:

1)npm-scripts.js:这是npm install实际执行的脚本,修改这个脚本目的是不要在npm install完成之后删除生成的过程文件,否则生成出来的pdb也删除了

119	case 'postinstall':
120	{
121		if (!process.env.MEDIASOUP_WORKER_BIN)
122		{
123			execute('node npm-scripts.js worker:build');
124			// Clean build artifacts except `mediasoup-worker`.
125			//execute(`${MAKE} clean-build -C worker`);
126			// Clean downloaded dependencies.
127			//execute(`${MAKE} clean-subprojects -C worker`);
128			// Clean PIP/Meson/Ninja.
129			execute(`${MAKE} clean-pip -C worker`);
130		}
131
132		break;
133	}

注释125行和127行,在npm install之后保留编译过程中生成的中间文件,还有拉取的依赖项目的源码。 

2)worker\Makefile:这个文件控制生成Debug还是Release,除了编译选项还有生成的目录不同。

10    # Controls build types, `Release` and `Debug` are presets optimized for those use cases.
11    # Other build types are possible too, but they are not presets and will require `MESON_ARGS` use to customize build
12    # configuration.
13    # Check the meaning of useful macros in the `worker/include/Logger.hpp` header file if you want to enable tracing or
14    # other debug information.
15    MEDIASOUP_BUILDTYPE ?= Debug

第15行默认是Release,改成Debug

3)重新构建

在 server\node_modules\mediasoup\worker目录下,执行npm rebuild,重新构建worker,生成的exe在out\Debug下,同时构建的过程文件在out\Debug\build里,pdb也在里面。

4)让server使用debug版本的worker

要让server启动Debug版本的worker,需要设置环境变量。设置环境变量可以在package.json中设置,我们执行npm start命令,实际是读取了package.json中的scripts.start的值,然后作为命令执行。

默认package.json如下,其中scripts.start的值前面的DEBUG=${DEBUG:='*mediasoup* *INFO* *WARN* *ERROR*'} INTERACTIVE=${INTERACTIVE:='true'}就是设置DEBUG和INTERACTIVE环境变量。

1	{
2	  "name": "mediasoup-demo-server",
3	  "version": "3.0.0",
4	  "private": true,
5	  "description": "mediasoup demo server",
6	  "author": "Iñaki Baz Castillo <ibc@aliax.net>",
7	  "license": "All Rights Reserved",
8	  "main": "lib/index.js",
9	  "scripts": {
10		"lint": "eslint -c .eslintrc.js server.js lib connect.js",
11		"start": "DEBUG=${DEBUG:='*mediasoup* *INFO* *WARN* *ERROR*'} INTERACTIVE=${INTERACTIVE:='true'} node server.js",
12		"connect": "node connect.js"
13	  },
      ......

 但是默认的值,只适合Linux,在Windows上需要改。而我们需要加上额外的环境变量,控制启动的worker是debug的版本。用到的环境变量如下:

  1. MEDIASOUP_BUILDTYPE:取值为Debug时就是运行Debug版本的worker,不是Debug时就是运行Release的版本
  2. MEDIASOUP_WORKER_BIN:直接指定mediasoup-worker.exe的路径。这个环境变量更加优先,只要设置了这个变量,就用这个变量指定的mediasoup-worker.exe

 在Windows上,设置环境变量需要使用set命令:

set MEDIASOUP_BUILDTYPE=Debug

设置多个变量需要多个set命令调用,中间可以用&&连接。注意变量的值是“=”到“&&”之间的所有内容,包括空格,所以不要有任何多余的空格,也不需要任何的'(单引号)和"(双引号)!!!比如DEBUG的值是*mediasoup* *INFO* *WARN* *ERROR*,中间即使有空格,也不需要加任何引号。

改完之后的package.json如下:

1	{
2	  "name": "mediasoup-demo-server",
3	  "version": "3.0.0",
4	  "private": true,
5	  "description": "mediasoup demo server",
6	  "author": "Iñaki Baz Castillo <ibc@aliax.net>",
7	  "license": "All Rights Reserved",
8	  "main": "lib/index.js",
9	  "scripts": {
10		"lint": "eslint -c .eslintrc.js server.js lib connect.js",
11		"start": "set DEBUG=*mediasoup* *INFO* *WARN* *ERROR*&&set INTERACTIVE=true&&set MEDIASOUP_BUILDTYPE=Debug&&node server.js",
12		"connect": "node connect.js"
13	  },
      ......

再次提醒,MEDIASOUP_BUILDTYPE=后面和Debug后面不要有空格!!!

然后rpm start启动server,任务管理器里就能看到mediasoup-worker.exe的路径是Debug的了

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值