10

現在、QtCreator 2.4.1 と Qt 4.7.4 開発ライブラリ (Ubuntu) を使用しており、valgrind でプロファイリングした後に QGraphicsView::paintEvent(…) メソッド内で内部的に発生するように見えるバグを追跡しようとしています。

この問題を特定するために、Qt ソースに足を踏み入れたいと思います。Qt フォーラムとスタック オーバーフローの両方を検索しましたが、ソースを私のバージョンの QtCreator に統合する方法を見つけることができませんでした。

現在、QtSDK マネージャーを介してソースをダウンロードし、[ツール] -> [オプション] -> [デバッガー] 内に「ソース パス マッピング」を追加しようとしています。内部Qtヘッダーファイル、つまりQGraphicsView.hからソースに切り替えることさえできないため、このステップで間違いを犯していると確信しています

これまでに、次のソース パス マッピングを追加しようとしました

Source Path=/var/tmp/qt-src TargetPath=/home/paul/QtSDK/QtSources/4.7.4

Source Path=/var/tmp/qt-src TargetPath=/home/paul/QtSDK/QtSources/4.7.4/src

どちらも機能しません。

また、ソースから Qt を直接ビルドして、これを Qt Creator 内の「Qt バージョン」リストに追加し、このバージョンを使用して新しいプロジェクト構成を作成しようとしました。これもうまくいきませんでした。

同様に、src フォルダーを gdbinit ファイルに追加しようとしました。これも機能しません。

私はこれで完全に迷っています。

ポール

4

1 に答える 1

6

誰かがここで同様の質問をしました: Need to step into Qt sources (my IDE is Qt Creator)

他の誰かが Qt での Valgrind エラーについてここで尋ねました: Suppression files for Qt memory leak with Valgrind

また、Qt Creator で Valgrind を使用する方法と、結果の読み方についての説明をもう少し詳しく説明します。2010年後半から少し古いです。

関連する提案

  • 私は QGraphicsView クラスをデバッグしません。それを機能させるためのすべての努力や、問題が無駄かもしれないという理由だけで... Qt は SceneGraph を QML のバックエンドとして使用するようになり、 QGraphicsViewのレンダリング エンジンは廃止される可能性があります。 .

  • Qt ライブラリの最新の安定したビルドに更新すると、QGraphicsView に大きな違いが生じる可能性があります。

  • Qt Trollsに取得している valgrind エラーを投稿すると、誰かが何が起こっているのか説明できるかもしれません。

  • 従来のデバッガ以外にもデバッグ手法があります。私は Windows で (valgrind なしで) Qt でプログラミングしており、多数の Dll をロードする大規模なマルチスレッド アプリケーションを使用しています。オブジェクト ツリー モデルのクリーンアップにある程度の信頼を置き、実行したすべてのnew呼び出しに取り組む必要がありました。ほとんどの場合、QDebug を使用してエラーを見つけました。次に、 との組み合わせを使用して、追跡が困難なバグの適切なログを実装していますqInstallMessageHandler()QDebug

Qt デバッグ テクニックも参照してください。

于 2012-06-03T06:04:44.177 に答える