Skip to main content

Qt Creator 21 を使用した Qt アプリケーションへの Tracepoint の実装

コメント
 このブログは「Implementing Tracepoints in Qt Applications using Qt Creator 21」の抄訳です。 

ソフトウェア開発者であれば時折、アプリケーションが期待通りに動作しない原因を調査しなければならないことがあります。そのような場合、一般的にはトレース出力を追加するか、プロファイラを使用することが推奨されます。

Qt の開発を行っている場合は、Qt に組み込まれているトレースフレームワークを利用できます。Q_TRACE_* マクロは Qt Core, Gui, Widgets, OpenGL, Qml, Quick, そして Quick3D の各モジュール全体に組み込まれています。

Qt の configure スクリプトには、次のオプションがあります:

-trace [backend] ..... Enable instrumentation with tracepoints.
                       Currently supported backends are 'etw' (Windows),
                       'lttng' (Linux), 'ctf' (Common Trace Format, cross-platform)
                       or 'yes' for auto-detection. [no]

ctf (Common Trace Format) バックエンドは、Qt 6.5 で追加されました。

Qt Creator 21 の Profile モード

私は -trace ctf の configure パラメータを指定して Qt 6.12 を Release with Debug Information 構成でビルドし、それを Qt Creator に登録しました。

以下は、Basic Drawing Example を Qt Tracepoints バックエンドで実行している様子です。

ユーザーアプリケーションでの Qt Tracepoints

Qt Creator では、この Qt 内部のトレースフレームワークを自分自身の Qt アプリケーションでも利用できます。

Basic Drawing Exampleでは、ペイント処理にどれくらいの時間がかかっているのかを知りたいとします。

Qt Creator 21 には、そのための利用を容易にする Wizard と Quick Fix が含まれています:

  • CMake のひな型コードを設定する
  • C++ コードへトレースマクロを挿入する

Qt Tracepoints の内部実装

前述のとおり、Qt Tracepoints API は内部 API です。しかし、Artificial Intelligence の助けを借りて、その概要を以下にまとめました。: Instrumented Tracing in Qt — the CTF backend (-trace ctf)

Feedback

Qt Tracepoints APIや IDE に対して、皆さんはどのような機能を期待しますか?ぜひ下のコメント欄でご意見をお聞かせください。

コメント

ブログを購読

Qt 6.12 を
今すぐ試そう!

最新リリースはこちらからダウンロードできます。 www.qt.io/download

Qt 6.12 LTS がリリースされました!アプリケーション開発者やデバイス開発者向けに、多くの新機能と改善が追加されています。 

採用情報 

現在、さまざまなポジションで採用を行っています。募集職種はこちら をご覧ください。また、Instagram をフォローして #QtPeople の働き方もぜひチェックしてください。