誤差処理ツール

開発者の視点から Jami をデバッグする方法がいくつかあります デバッグしたいものによって

伐木業

The first way is to use runtime loggers. Starting jami with -d will enable logging by the daemon (or the Troubleshoot section in the General settings). Because Jami uses several libraries, we do not enable all logs by default. But you can pass some environment variables to show it:

  • `SIPLOGLEVEL=5`PJSIPからログを有効にする.

  • DHTLOGLEVEL=5 OpenDHTからログを有効にする.

  • AVLOGLEVEL=50 ffmpegからログを有効にする.

デバッグ

Generally your IDE has an embedded debugger. Else, you can use gdb for example to be able to add breakpoints, backtraces from crashes, print internal structures, etc. You need to compile the project in DEBUG mode to get debug symbols.

役に立たないコマンド:

  • b file.cpp:line - 断点を追加 (file.cpp:line は符号で置き換えられる)

  • t a a bt - (糸をすべてバックトラースに適用) すべてのバックトラースを取得するために

  • Ctrl + X / A - グラフィック表示でパス

  • p - 内値を印刷する.

Note: VSCode is fully supported by Jami and can be used to debug the project.

プロフィール

デバッグは有用ですが,リアルタイムメモリ消費/ネットワーク活動/CPU使用を表示しません. そのためには,IDEに埋め込まれたプロファイラー (例えば Android StudioやQt Creator/Visual Studio) を使用できます.

アドレス 衛生機

実行時に漏洩,クラッシュ,潜在的死穴を検出するのに役立つ.これを可能にするには,デモンを `CXXFLAGS+="-fsanitize=address"`でコンパイルできます.

バルグリンド/コールグリンド

Valgrindは,割り当て,CPU使用等を監視するツールであり,: `valgrind --tool=callgrind./jami -d`で使用できます. これによりアプリケーションは非常に遅いが,メモリ割り当て/パフォーマンス使用に関する有用なレポートを提供できます (**KCacheGrind**はレポートを読むために使用できます).

試験

ダイモンには多くのテストとカバーが有効です.ダイモンが静態で構築されている場合 (他のプライベートシンボルは利用できません) 新しいテストを追加することでバグを複製し,バグを解決し,後退を回避することができます. (参照 daemon/test/unitTests`)

代理人

テストでは,両同級者をシミュレーションするために,一つのデモンのみを使用している.したがって,さまざまな環境でテストすることは困難である.別の可能性は,シナリオを書いてエージェントを実行することです (ドキュメントはデモンリポジトリで利用できます).

LTTng

`daemon/tools/trace`はドキュメントといくつかの例を提供している.LTTngの利点は,ログよりも速く,システムイベントによって触発され,カーネルに既に存在しているトラスポイント (ネットワークインターフェースからのトラスポイントで使用できるように) で使用できるという.

試験

Both clients and daemon have tests. Daemon's tests are written in C++ and use the cppunit framework. They are located in the daemon/tests directory.