
Fork dari http://sourceForge.net/projects/state-threads, ditambal untuk srs.
Lihat: https://github.com/ossrs/state-threads/blob/srs/readme
Untuk ST asli tanpa perubahan, periksa cabang ST Master.
State-Threads dilisensikan di bawah MPL atau GPLV2.
Dapatkan Kode:
git clone -b srs https://github.com/ossrs/state-threads.gitUntuk Linux:
make linux-debug Untuk Linux Aarch64, yang gagal dengan Unknown CPU architecture :
make linux-debug EXTRA_CFLAGS= " -D__aarch64__ "Catatan: Untuk lebih banyak arsitektur CPU, silakan lihat #22
Linux dengan Valgrind:
make linux-debug EXTRA_CFLAGS= " -DMD_VALGRIND "Komentar: Pengguna harus menginstal Valgrind, misalnya, di centos6
sudo yum install -y valgrind valgrind-devel.
Linux dengan Valgrind dan Epoll:
make linux-debug EXTRA_CFLAGS= " -DMD_HAVE_EPOLL -DMD_VALGRIND " Dapatkan Kode:
git clone -b srs https://github.com/ossrs/state-threads.gitUntuk OSX:
make darwin-debugUntuk OSX, pengguna harus menentukan file header Valgrind:
make darwin-debug EXTRA_CFLAGS= " -DMD_HAVE_KQUEUE -DMD_VALGRIND -I/usr/local/include "Komentar: M1 tidak didukung oleh ST, silakan gunakan Docker untuk dijalankan, silakan baca SRS#2747.
Dapatkan Kode:
git clone -b srs https://github.com/ossrs/state-threads.gitUntuk Cygwin (Windows):
make cygwin64-debug
Komentar: Windows Native Build tidak didukung sekarang.
Cabang SRS ditambal dan disempurnakan:
MD_ST_NO_ASM untuk menonaktifkan ASM, #8. Cara men -debug dengan GDB di bawah Valgrind, baca Valgrind Manual.
Tentang parameter startup, baca Valgrind CLI.
Opsi CLI Penting:
--undef-value-errors=<yes|no> [default: yes] , mengontrol apakah laporan memcheck menggunakan kesalahan nilai yang tidak terdefinisi. Atur ini ke tidak jika Anda tidak ingin melihat kesalahan nilai yang tidak ditentukan. Ini juga memiliki efek samping dari mempercepat memcheck.--leak-check=<no|summary|yes|full> [default: summary] , saat diaktifkan, cari kebocoran memori ketika program klien selesai. Jika diatur ke ringkasan, ia mengatakan berapa banyak kebocoran yang terjadi. Jika disetel ke penuh atau ya, setiap kebocoran individu akan ditampilkan secara rinci dan/atau dihitung sebagai kesalahan, sebagaimana ditentukan oleh opsi- --show-leak-kinds dan --errors-for-leak-kinds .--track-origins=<yes|no> [default: no] , mengontrol apakah memcheck melacak asal nilai yang tidak diinisialisasi. Secara default, itu tidak, yang berarti bahwa meskipun dapat memberi tahu Anda bahwa nilai yang tidak diwarisi digunakan dengan cara yang berbahaya, ia tidak dapat memberi tahu Anda dari mana nilai yang tidak diwarisi berasal. Ini sering membuat sulit untuk melacak masalah root.--show-reachable=<yes|no> , --show-possibly-lost=<yes|no> , untuk menunjukkan memori menggunakan. CATATAN: Kami menggunakan tes Google di
utest/gtest-fit.
Untuk membuat ST dengan UNEST dan menjalankannya:
make linux-debug-utest && ./obj/st_utest Perhatikan bahwa GCC (4.8) dari Centos terlalu tua, silakan gunakan Docker ( ossrs/srs:dev-gcc7 ) untuk menjalankan:
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 ' CATATAN: Kami menggunakan tes Google di
utest/gtest-fit.
Untuk membuat ST dengan UNEST dan menjalankannya:
make darwin-debug-utest && ./obj/st_utestCATATAN: Kami menggunakan tes Google di
utest/gtest-fit.
Untuk membuat ST dengan UNEST dan menjalankannya:
make linux-debug-gcov && ./obj/st_utest Perhatikan bahwa GCC (4.8) dari Centos terlalu tua, silakan gunakan Docker ( ossrs/srs:dev-gcc7 ) untuk menjalankan:
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 'Kemudian, instal GCOVR untuk cakupan:
yum install -y python2-pip &&
pip install lxml && pip install gcovrAkhirnya, jalankan tes dan dapatkan laporannya:
bash auto/coverage.shCATATAN: Kami menggunakan tes Google di
utest/gtest-fit.
Untuk membuat ST dengan UNEST dan menjalankannya:
make darwin-debug-gcov && ./obj/st_utestKemudian, instal GCOVR untuk cakupan:
pip install gcovrAkhirnya, jalankan tes dan dapatkan laporannya:
bash auto/coverage.shPendahuluan: http://ossrs.github.io/state-threads/docs/st.html
Referensi API: http://ossrs.github.io/state-threads/docs/reference.html
Catatan Pemrograman: http://ossrs.github.io/state-threads/docs/notes.html
Bagaimana cara porting ST ke OS/CPU lainnya?
Tentang SetJmp dan Longjmp, baca setJmp.
Tentang struktur tumpukan, baca tumpukan
Tentang Komentar Kode ASM, Baca #91D530E.
Tentang Penjadwal, Baca #13-Scheduler.
Tentang sistem acara IO, baca #13-io.
Analisis kode, silakan baca #15.
Gunakan clion untuk membuka direktori-state-threads.
Kemudian, buka ide/st_clion/CMakeLists.txt dan klik Load CMake project .
Akhirnya, pilih konfigurasi untuk dijalankan atau debug.
Winlin 2016