0

Linux でのトレースは初めてです。マルチスレッドの C++ ユーザー アプリケーションがあります。スレッドは定期的に (o/s タイマーによって) 起動し、何らかの処理を行った後にスリープします。視覚化したい:

1) スレッドの開始時と停止時

2) スレッドが実行されているコア。

lttng と Trace Compass を Ubuntu 14.04 LTS マシンにインストールしました。しかし、これらのツールを使用して目的を達成する方法がわかりません。

次の lttng doc セクションを読みました。

http://lttng.org/docs/#doc-tracing-your-own-user-application

トレースを収集するには、カスタムの lttng トレースポイント定義を (トレースポイント プロバイダー ヘッダー ファイルで) 定義し、トレースポイントをユーザー アプリケーションに挿入する必要がありますか? または、目標を達成するためのより簡単な方法はありますか?

よろしくお願いします

デビッド

4

1 に答える 1

0

カーネル トレースを取得して、少なくともsched_switchイベントを有効にして、どのスレッドがどの CPU で実行されているかに関する情報を取得できます。このようなトレースを Trace Compass で開き、制御フロー ビューを見ると、すべてのスレッドのステータスが表示されるので、アプリケーションに対応するスレッドを検索できます。

さらに、前述のように、ユーザー空間のトレースポイントを使用してアプリケーションを計測することもできます。これにより、ユーザー空間の状態を追跡し、カーネル トレースだけで利用できるものよりもさらに進んでいくことができます。

この例/チュートリアルに興味があるかもしれません。これは、単純なアプリケーションを計測する方法と、Trace Compass 構成ファイルを記述してアプリケーションの状態をグラフィカルに表示する方法を示しています。

于 2016-08-29T16:54:54.027 に答える