
شوكة من http://sourceforge.net/projects/state-threads ، مصححة ل SRS.
انظر: https://github.com/ossrs/state-threads/blob/srs/readme
لأصلي ST دون أي تغييرات ، الخروج عن فرع St Master.
يتم ترخيص عمليات الرصاص الحكومية بموجب MPL أو GPLV2.
احصل على الكود:
git clone -b srs https://github.com/ossrs/state-threads.gitللينكس:
make linux-debug بالنسبة إلى Linux AARCH64 ، الذي يفشل مع Unknown CPU architecture :
make linux-debug EXTRA_CFLAGS= " -D__aarch64__ "ملاحظة: لمزيد من بنيات وحدة المعالجة المركزية ، يرجى الاطلاع على #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 الأصلي غير مدعوم الآن.
تم تصحيح الفرع SRS وصقله:
MD_ST_NO_ASM لتعطيل ASM ، #8. كيفية تصحيح GDB تحت Valgrind ، اقرأ دليل 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> ، لإظهار استخدام الذاكرة. ملاحظة: نستخدم اختبار Google في
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 في
utest/gtest-fit.
لجعل ST مع utest وتشغيله:
make darwin-debug-utest && ./obj/st_utestملاحظة: نستخدم اختبار Google في
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 في
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 OS/CPU الأخرى؟
حول setjmp و longjmp ، اقرأ setJMP.
حول بنية المكدس ، اقرأ المكدس
حول تعليقات رمز ASM ، اقرأ #91d530e.
حول الجدولة ، اقرأ #13 جدولة.
حول نظام الأحداث IO ، اقرأ #13-IO.
تحليل الرمز ، يرجى قراءة #15.
استخدم CLION لفتح أطراف الدليل.
ثم ، افتح ide/st_clion/CMakeLists.txt وانقر فوق Load CMake project .
أخيرًا ، حدد تكوينًا لتشغيل أو تصحيح.
وينلين 2016