
http://sourceforge.net/projects/state-threadsからのフォーク、SRSのパッチ。
参照:https://github.com/ossrs/state-threads/blob/srs/readme
変更なしのオリジナルSTについては、STマスターブランチをチェックアウトします。
State-Threadsは、MPLまたはGPLV2の下でライセンスされています。
コードを取得:
git clone -b srs https://github.com/ossrs/state-threads.gitLinuxの場合:
make linux-debug Linux Aarch64の場合、 Unknown CPU architectureで失敗します。
make linux-debug EXTRA_CFLAGS= " -D__aarch64__ "注:CPUアーキテクチャの詳細については、#22を参照してください
ValgrindのLinux:
make linux-debug EXTRA_CFLAGS= " -DMD_VALGRIND "注:ユーザーは、たとえばCentos6
sudo yum install -y valgrind valgrind-develにValgrindをインストールする必要があります。
ValgrindとEpollのLinux:
make linux-debug EXTRA_CFLAGS= " -DMD_HAVE_EPOLL -DMD_VALGRIND " コードを取得:
git clone -b srs https://github.com/ossrs/state-threads.gitOSXの場合:
make darwin-debugOSXの場合、ユーザーは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.gitCygwin(Windows)の場合:
make cygwin64-debug
注:Windowsネイティブビルドは現在サポートされていません。
ブランチSRSはパッチされ、洗練されました:
MD_ST_NO_ASMをサポートしてASMを無効にします#8。 Valgrindの下でGDBでデバッグする方法、Valgrindマニュアルをお読みください。
スタートアップパラメーターについては、Valgrind CLIをお読みください。
重要なCLIオプション:
--undef-value-errors=<yes|no> [default: yes]は、memcheckが未定義の値エラーの使用を報告するかどうかを制御します。未定義の値エラーが表示されたくない場合は、これをNOに設定します。また、MemCheckを多少スピードアップする副作用もあります。--leak-check=<no|summary|yes|full> [default: summary]を有効にすると、クライアントプログラムが終了したときにメモリリークを検索します。要約に設定すると、漏れが発生した数が表示されます。完全またはYesに設定されている場合、個々のリークは、オプション--show-leak-kinds 、および--errors-for-leak-kinds指定されているように、エラーとして詳細に表示されるか、エラーとしてカウントされます。--track-origins=<yes|no> [default: no]は、memCheckが無効値の原点を追跡するかどうかを制御します。デフォルトでは、そうではありません。つまり、無知の値が危険な方法で使用されていることがわかりますが、無知の値がどこから来たのかはわかりません。これにより、根の問題を追跡することがしばしば困難になります。--show-reachable=<yes|no> , --show-possibly-lost=<yes|no> 、使用しているメモリを表示します。 注:
utest/gtest-fitでGoogleテストを使用しています。
UtestでSTを作成して実行するには:
make linux-debug-utest && ./obj/st_utest CentosのGCC(4.8)が古すぎることに注意してください。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 ' 注:
utest/gtest-fitでGoogleテストを使用しています。
UtestでSTを作成して実行するには:
make darwin-debug-utest && ./obj/st_utest注:
utest/gtest-fitでGoogleテストを使用しています。
UtestでSTを作成して実行するには:
make linux-debug-gcov && ./obj/st_utest CentosのGCC(4.8)が古すぎることに注意してください。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注:
utest/gtest-fitでGoogleテストを使用しています。
UtestでSTを作成して実行するには:
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