
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.gitLinux 용 :
make linux-debug Unknown CPU architecture 로 실패한 Linux Aarch64의 경우 :
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-devel에 Valgrind를 설치해야합니다.
Valgrind 및 Epoll을 사용한 Linux :
make linux-debug EXTRA_CFLAGS= " -DMD_HAVE_EPOLL -DMD_VALGRIND " 코드 받기 :
git clone -b srs https://github.com/ossrs/state-threads.gitOSX의 경우 :
make darwin-debugOSX의 경우 사용자는 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.gitCygwin (Windows)의 경우 :
make cygwin64-debug
비고 : Windows Native Build는 지금 지원되지 않습니다.
분기 SRS는 패치 및 정제되었습니다.
MD_ST_NO_ASM 지원합니다. 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 Test를 사용합니다.
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 Test를 사용합니다.
utest로 st를 만들고 그것을 실행하려면 :
make darwin-debug-utest && ./obj/st_utest참고 :
utest/gtest-fit에서 Google Test를 사용합니다.
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 Test를 사용합니다.
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
ST를 다른 OS/CPU로 포팅하는 방법은 무엇입니까?
setjmp 및 longjmp에 대해 setjmp를 읽으십시오.
스택 구조에 대해 스택을 읽으십시오
ASM 코드 주석에 대해 #91D530E를 읽으십시오.
스케줄러에 대해 #13 Scheduler를 읽으십시오.
IO 이벤트 시스템에 대해 #13-IO를 읽으십시오.
코드 분석, #15를 읽으십시오.
Clion을 사용하여 디렉토리를 열어주십시오.
그런 다음 ide/st_clion/CMakeLists.txt 열고 Load CMake project 클릭하십시오.
마지막으로, 실행하거나 디버그 할 구성을 선택하십시오.
Winlin 2016