
Fork à partir de http://sourceforge.net/projects/state-threads, correctement pour SRS.
Voir: https://github.com/ossrs/state-threads/blob/srs/readme
Pour ST d'origine sans aucune modification, consultez la branche ST Master.
State-Threads est autorisé sous MPL ou GPLV2.
Obtenez du code:
git clone -b srs https://github.com/ossrs/state-threads.gitPour Linux:
make linux-debug Pour Linux Aarch64, qui échoue avec Unknown CPU architecture :
make linux-debug EXTRA_CFLAGS= " -D__aarch64__ "Remarque: Pour plus d'architectures CPU, veuillez consulter # 22
Linux avec Valgrind:
make linux-debug EXTRA_CFLAGS= " -DMD_VALGRIND "Remarque: L'utilisateur doit installer Valgrind, par exemple, dans Centos6
sudo yum install -y valgrind valgrind-devel.
Linux avec Valgrind et Epoll:
make linux-debug EXTRA_CFLAGS= " -DMD_HAVE_EPOLL -DMD_VALGRIND " Obtenez du code:
git clone -b srs https://github.com/ossrs/state-threads.gitPour OSX:
make darwin-debugPour OSX, l'utilisateur doit spécifier les fichiers d'en-tête ValGrind:
make darwin-debug EXTRA_CFLAGS= " -DMD_HAVE_KQUEUE -DMD_VALGRIND -I/usr/local/include "Remarque: M1 n'est pas pris en charge par ST, veuillez utiliser Docker pour s'exécuter, veuillez lire SRS # 2747.
Obtenez du code:
git clone -b srs https://github.com/ossrs/state-threads.gitPour Cygwin (Windows):
make cygwin64-debug
Remarque: la construction native de Windows n'est pas supportée en ce moment.
La branche SRS a été corrigée et affinée:
MD_ST_NO_ASM pour désactiver ASM, # 8. Comment déboguer avec GDB sous Valgrind, lire le manuel de Valgrind.
À propos des paramètres de démarrage, lisez Valgrind CLI.
Options d'importantes CLI:
--undef-value-errors=<yes|no> [default: yes] , contrôle si MemCheck rapporte les utilisations des erreurs de valeur non définies. Définissez ceci sur non si vous ne voulez pas voir les erreurs de valeur non définies. Il a également l'effet secondaire de l'accélérer quelque peu Memcheck.--leak-check=<no|summary|yes|full> [default: summary] , lorsque vous activez, recherchez des fuites de mémoire lorsque le programme client se termine. S'il est réglé en résumé, il indique combien de fuites se sont produites. Si elle est définie sur Full ou OUI, chaque fuite individuelle sera affichée en détail et / ou compté comme une erreur, comme spécifié par les options --show-leak-kinds et --errors-for-leak-kinds .--track-origins=<yes|no> [default: no] , contrôle si MemCheck suit l'origine des valeurs non initialisées. Par défaut, ce n'est pas le cas, ce qui signifie que bien qu'il puisse vous dire qu'une valeur non initialisée est utilisée de manière dangereuse, il ne peut pas vous dire d'où vient la valeur non initialisée. Cela rend souvent difficile de retrouver le problème racine.--show-reachable=<yes|no> , --show-possibly-lost=<yes|no> , pour afficher la mémoire d'utilisation. Remarque: Nous utilisons Google Test dans
utest/gtest-fit.
Pour faire ST avec USEST et exécutez-le:
make linux-debug-utest && ./obj/st_utest Notez que le GCC (4.8) de CentOS est trop ancien, veuillez utiliser Docker ( ossrs/srs:dev-gcc7 ) pour exécuter:
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 ' Remarque: Nous utilisons Google Test dans
utest/gtest-fit.
Pour faire ST avec USEST et exécutez-le:
make darwin-debug-utest && ./obj/st_utestRemarque: Nous utilisons Google Test dans
utest/gtest-fit.
Pour faire ST avec USEST et exécutez-le:
make linux-debug-gcov && ./obj/st_utest Notez que le GCC (4.8) de CentOS est trop ancien, veuillez utiliser Docker ( ossrs/srs:dev-gcc7 ) pour exécuter:
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 'Ensuite, installez GCOVR pour la couverture:
yum install -y python2-pip &&
pip install lxml && pip install gcovrEnfin, exécutez le test et obtenez le rapport:
bash auto/coverage.shRemarque: Nous utilisons Google Test dans
utest/gtest-fit.
Pour faire ST avec USEST et exécutez-le:
make darwin-debug-gcov && ./obj/st_utestEnsuite, installez GCOVR pour la couverture:
pip install gcovrEnfin, exécutez le test et obtenez le rapport:
bash auto/coverage.shIntroduction: http://ossrs.github.io/state-threads/docs/st.html
Référence de l'API: http://ossrs.github.io/state-threads/docs/reference.html
Remarques de programmation: http://ossrs.github.io/state-threads/docs/notes.html
Comment portage St vers un autre système d'exploitation / CPU?
À propos de setjmp et longjmp, lisez setjmp.
À propos de la structure de la pile, lisez la pile
À propos des commentaires du code ASM, lisez # 91D530E.
À propos du planificateur, lisez # 13-Scheduler.
À propos du système d'événements IO, lisez # 13-io.
Analyse du code, veuillez lire # 15.
Utilisez Clion pour ouvrir les répertoires d'État.
Ensuite, ouvrez ide/st_clion/CMakeLists.txt et cliquez sur Load CMake project .
Enfin, sélectionnez une configuration pour exécuter ou déboguer.
Winlin 2016