
ส้อมจาก http://sourceforge.net/projects/state-threads, แพทช์สำหรับ SRS
ดู: https://github.com/ossrs/state-threads/blob/srs/readme
สำหรับ ST ดั้งเดิมโดยไม่มีการเปลี่ยนแปลงใด ๆ ให้เช็คเอาต์สาขา ST Master
State-Threads ได้รับใบอนุญาตภายใต้ 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
Linux กับ Valgrind:
make linux-debug EXTRA_CFLAGS= " -DMD_VALGRIND "หมายเหตุ: ผู้ใช้จะต้องติดตั้ง valgrind ตัวอย่างเช่นใน centos6
sudo yum install -y valgrind valgrind-devel
Linux กับ Valgrind และ Epoll:
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 ไม่ได้รับการสนับสนุนในขณะนี้
สาขา SRS ได้รับการแก้ไขและขัดเกลา:
MD_ST_NO_ASM เพื่อปิดการใช้งาน ASM, #8 วิธีการดีบักกับ GDB ภายใต้ Valgrind อ่านคู่มือ Valgrind
เกี่ยวกับพารามิเตอร์เริ่มต้นอ่าน Valgrind CLI
ตัวเลือก CLI ที่สำคัญ:
--undef-value-errors=<yes|no> [default: yes] ควบคุมว่ารายงาน MEMCHECK ใช้ข้อผิดพลาดค่าที่ไม่ได้กำหนดหรือไม่ ตั้งค่านี้เป็น NO หากคุณไม่ต้องการเห็นข้อผิดพลาดค่าที่ไม่ได้กำหนด นอกจากนี้ยังมีผลข้างเคียงของการเร่ง 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> เพื่อแสดงหน่วยความจำที่ใช้ หมายเหตุ: เราใช้ Google Test ใน
utest/gtest-fit
เพื่อให้ ST กับ Utest และเรียกใช้:
make linux-debug-utest && ./obj/st_utest โปรดทราบว่า GCC (4.8) ของ Centos นั้นเก่าเกินไปโปรดใช้ 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 ' หมายเหตุ: เราใช้ Google Test ใน
utest/gtest-fit
เพื่อให้ ST กับ Utest และเรียกใช้:
make darwin-debug-utest && ./obj/st_utestหมายเหตุ: เราใช้ Google Test ใน
utest/gtest-fit
เพื่อให้ ST กับ Utest และเรียกใช้:
make linux-debug-gcov && ./obj/st_utest โปรดทราบว่า GCC (4.8) ของ Centos นั้นเก่าเกินไปโปรดใช้ 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หมายเหตุ: เราใช้ Google Test ใน
utest/gtest-fit
เพื่อให้ ST กับ Utest และเรียกใช้:
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