
Gabel von http://sourceforge.net/projects/state-threads, gepatcht für srs.
Siehe: https://github.com/ossrs/state-threads/blob/srs/readme
Bei Original ST ohne Änderungen finden Sie den ST Master -Zweig.
State-threads ist unter MPL oder GPLV2 lizenziert.
Code erhalten:
git clone -b srs https://github.com/ossrs/state-threads.gitFür Linux:
make linux-debug Für Linux AArch64, die mit Unknown CPU architecture fehlschlagen:
make linux-debug EXTRA_CFLAGS= " -D__aarch64__ "Hinweis: Weitere CPU -Architekturen finden Sie in #22
Linux mit Valgrind:
make linux-debug EXTRA_CFLAGS= " -DMD_VALGRIND "Bemerkung: Der Benutzer muss Valgrind beispielsweise in CentOS6
sudo yum install -y valgrind valgrind-devel.
Linux mit Valgrind und Epoll:
make linux-debug EXTRA_CFLAGS= " -DMD_HAVE_EPOLL -DMD_VALGRIND " Code erhalten:
git clone -b srs https://github.com/ossrs/state-threads.gitFür OSX:
make darwin-debugFür OSX muss der Benutzer die Valgrind -Header -Dateien angeben:
make darwin-debug EXTRA_CFLAGS= " -DMD_HAVE_KQUEUE -DMD_VALGRIND -I/usr/local/include "Bemerkung: M1 wird von ST nicht unterstützt. Bitte verwenden Sie Docker zum Ausführen, bitte lesen Sie SRS#2747.
Code erhalten:
git clone -b srs https://github.com/ossrs/state-threads.gitFür Cygwin (Windows):
make cygwin64-debug
Bemerkung: Windows Native Build ist momentan nicht unterstützt.
Der Zweig SRS wurde geflickt und verfeinert:
MD_ST_NO_ASM um ASM, #8 zu deaktivieren. So debuggen Sie mit GDB unter Valgrind, lesen Sie Valgrind Manual.
Über Startparameter finden Sie Valgrind CLI.
Wichtige CLI -Optionen:
--undef-value-errors=<yes|no> [default: yes] steuert, ob Memcheck verwendet, und die Verwendung von undefinierten Wertfehlern. Setzen Sie dies auf Nein, wenn Sie nicht definierte Wertfehler sehen möchten. Es hat auch den Nebeneffekt, Memcheck etwas zu beschleunigen.--leak-check=<no|summary|yes|full> [default: summary] , wenn aktiviert, suchen Sie nach Abschluss des Client-Programms nach Speicherlecks. Wenn auf eine Zusammenfassung eingestellt ist, heißt es, wie viele Lecks aufgetreten sind. Wenn auf vollständige oder ja eingestellt wird, wird jedes einzelne Leck ausführlich angezeigt und/oder als Fehler gezählt, wie in den Optionen angegeben --show-leak-kinds und --errors-for-leak-kinds .--track-origins=<yes|no> [default: no] steuert, ob Memcheck den Ursprung nicht initialisierter Werte verfolgt. Standardmäßig ist dies nicht der Fall, was bedeutet, dass Sie jedoch nicht sagen können, woher der nicht initialisierte Wert stammt, obwohl es Ihnen sagen kann, dass ein nicht initialisierter Wert auf gefährliche Weise verwendet wird. Dies macht es oft schwierig, das Wurzelproblem aufzuspüren.--show-reachable=<yes|no> , --show-possibly-lost=<yes|no> , um die Verwendung von Speicher anzuzeigen. Hinweis: Wir verwenden den Google-Test in
utest/gtest-fit.
ST mit Utest zu machen und es auszuführen:
make linux-debug-utest && ./obj/st_utest Beachten Sie, dass der GCC (4.8) von CentOS zu alt ist. Bitte verwenden Sie Docker ( ossrs/srs:dev-gcc7 ), um zu laufen:
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 ' Hinweis: Wir verwenden den Google-Test in
utest/gtest-fit.
ST mit Utest zu machen und es auszuführen:
make darwin-debug-utest && ./obj/st_utestHinweis: Wir verwenden den Google-Test in
utest/gtest-fit.
ST mit Utest zu machen und es auszuführen:
make linux-debug-gcov && ./obj/st_utest Beachten Sie, dass der GCC (4.8) von CentOS zu alt ist. Bitte verwenden Sie Docker ( ossrs/srs:dev-gcc7 ), um zu laufen:
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 'Installieren Sie dann GCOVR für die Abdeckung:
yum install -y python2-pip &&
pip install lxml && pip install gcovrSchließlich testen Sie und erhalten Sie den Bericht:
bash auto/coverage.shHinweis: Wir verwenden den Google-Test in
utest/gtest-fit.
ST mit Utest zu machen und es auszuführen:
make darwin-debug-gcov && ./obj/st_utestInstallieren Sie dann GCOVR für die Abdeckung:
pip install gcovrSchließlich testen Sie und erhalten Sie den Bericht:
bash auto/coverage.shEinführung: http://ossrs.github.io/state-threads/docs/st.html
API-Referenz: http://ossrs.github.io/state-threads/docs/reference.html
Programmiernotizen: http://osrs.github.io/state-threads/docs/notes.html
Wie kann ich ST mit anderen Betriebssystemen/CPU portieren?
Über SetJMP und LongJMP, lesen Sie SetJMP.
Über die Stapelstruktur, lesen Sie Stack
Über ASM -Code -Kommentare finden Sie #91D530E.
Über den Scheduler, lesen Sie #13-Scheduler.
Über das IO-Ereignissystem, lesen Sie #13-io.
Codeanalyse, bitte lesen Sie #15.
Verwenden Sie Clion, um Verzeichnisstaiten zu öffnen.
Öffnen Sie dann ide/st_clion/CMakeLists.txt und klicken Sie auf Load CMake project .
Wählen Sie schließlich eine Konfiguration zum Ausführen oder Debuggen aus.
Winlin 2016