
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