誤差処理ツール

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

伐木業

ヽjami` と開始すると,デモン (または一般設定のトラブルシューティングセクション) によってログインを可能にします. Jami は複数のライブラリを使用しているため,すべてのログをデフォルトで有効にすることはできません. しかし,それを表示するためにいくつかの環境変数を通過することができます:

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

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

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

デバッグ

一般的に,IDEには埋め込みデバッグガーがあります.そうでなければ,例えば,breakpoint,クラッシュからのバックトラース,インターン構造を印刷するなどを追加するために, gdb を使用できます.デバッグシンボルを入手するには,プロジェクトを *DEBUG*モードでコンパイルする必要があります.

役に立たないコマンド:

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

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

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

  • p - 内値を印刷する.

プロフィール

デバッグは有用ですが,リアルタイムメモリ消費/ネットワーク活動/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の利点は,ログよりも速く,システムイベントによって触発され,カーネルに既に存在しているトラスポイント (ネットワークインターフェースからのトラスポイントで使用できるように) で使用できるという.