
fork摘自http://sourceforge.net/projects/state-threads,为SRS修补。
请参阅:https://github.com/ossrs/state-threads/blob/srs/readme
对于原始ST而无需任何更改,请签约ST主分支。
州线程是根据MPL或GPLV2许可的。
获取代码:
git clone -b srs https://github.com/ossrs/state-threads.git对于Linux:
make linux-debug对于Linux Aarch64,它因Unknown CPU architecture而失败:
make linux-debug EXTRA_CFLAGS= " -D__aarch64__ "注意:有关更多CPU架构,请参阅#22
带Valgrind的Linux:
make linux-debug EXTRA_CFLAGS= " -DMD_VALGRIND "备注:例如,用户必须在Centos6
sudo yum install -y valgrind valgrind-develvalgrind。
带有Valgrind和epoll的Linux:
make linux-debug EXTRA_CFLAGS= " -DMD_HAVE_EPOLL -DMD_VALGRIND " 获取代码:
git clone -b srs https://github.com/ossrs/state-threads.git对于OSX:
make darwin-debug对于OSX,用户必须指定Valgrind标头文件:
make darwin-debug EXTRA_CFLAGS= " -DMD_HAVE_KQUEUE -DMD_VALGRIND -I/usr/local/include "备注:M1不受ST的支持,请使用Docker运行,请阅读SRS#2747。
获取代码:
git clone -b srs https://github.com/ossrs/state-threads.git对于Cygwin(Windows):
make cygwin64-debug
备注:Windows Native Build现在不支持。
分支SR被修补和完善:
MD_ST_NO_ASM禁用ASM,#8。 如何在Valgrind下与GDB进行调试,阅读Valgrind手册。
关于启动参数,阅读Valgrind CLI。
重要的CLI选项:
--undef-value-errors=<yes|no> [default: yes] ,控制Memcheck是否报告了未定义值错误的使用。如果您不想看到未定义的值错误,则将其设置为“”。它还具有在某种程度上加速Memcheck的副作用。--leak-check=<no|summary|yes|full> [default: summary] ,启用时,请在客户端程序完成时搜索内存泄漏。如果设置为摘要,它说发生了多少泄漏。如果设置为已设置为“完全”或“是”,则每个单独的泄漏将详细显示和/或将其视为错误,如选项所指定的--show-leak-kinds和--errors-for-leak-kinds 。--track-origins=<yes|no> [default: no] ,控制MEMCHECK是否跟踪非初始化值的起源。默认情况下,它不是,这意味着它可以告诉您以危险的方式使用了一个非国际化的值,但它不能告诉您非初始化的价值来自何处。这通常使得很难找到根问题。--show-reachable=<yes|no> , --show-possibly-lost=<yes|no> ,显示使用内存。 注意:我们在
utest/gtest-fit中使用Google测试。
用utest制作st并运行它:
make linux-debug-utest && ./obj/st_utest请注意,CentOS的GCC(4.8)太老了,请使用Docker( ossrs/srs:dev-gcc7 )运行:
docker run --rm -it -v $( pwd ) :/state-threads -w /state-threads
registry.cn-hangzhou.aliyuncs.com/ossrs/srs:dev-gcc7
bash -c ' make linux-debug-utest && ./obj/st_utest ' 注意:我们在
utest/gtest-fit中使用Google测试。
用utest制作st并运行它:
make darwin-debug-utest && ./obj/st_utest注意:我们在
utest/gtest-fit中使用Google测试。
用utest制作st并运行它:
make linux-debug-gcov && ./obj/st_utest请注意,CentOS的GCC(4.8)太老了,请使用Docker( ossrs/srs:dev-gcc7 )运行:
docker run --rm -it -v $( pwd ) :/state-threads -w /state-threads
registry.cn-hangzhou.aliyuncs.com/ossrs/srs:dev-gcc7
bash -c ' make linux-debug-gcov && ./obj/st_utest '然后,安装GCOVR以进行覆盖:
yum install -y python2-pip &&
pip install lxml && pip install gcovr最后,运行测试并获取报告:
bash auto/coverage.sh注意:我们在
utest/gtest-fit中使用Google测试。
用utest制作st并运行它:
make darwin-debug-gcov && ./obj/st_utest然后,安装GCOVR以进行覆盖:
pip install gcovr最后,运行测试并获取报告:
bash auto/coverage.sh简介:http://ossrs.github.io/state-threads/docs/st.html
API参考:http://ossrs.github.io/state-threads/docs/reference.html
编程说明:http://ossrs.github.io/state-threads/docs/notes.html
如何移植到其他OS/CPU?
关于setJMP和longJMP,读取setJMP。
关于堆栈结构,阅读堆栈
关于ASM代码注释,请阅读#91D530E。
关于调度程序,请阅读#13-Scheduler。
关于IO事件系统,阅读#13-io。
代码分析,请阅读#15。
使用CLION打开目录状态线程。
然后,打开ide/st_clion/CMakeLists.txt ,然后单击Load CMake project 。
最后,选择一个以运行或调试的配置。
Winlin 2016