5

Qt Creator 2.7.1 と Qt 4.8.4 を使用して、Qt ライブラリと、このライブラリに対して動的にリンクする簡単な Qt アプリを作成しました。アプリをリモートでデプロイしてデバッグし、呼び出し時にライブラリ関数にステップインしようとしています。ブレークポイントを設定してリモートでデバッグすることはできますが、デバッガー ( gdb ) を使用してライブラリ関数にステップ インすることはできません。デバッグ モードで QtCreator を使用して初めてア​​プリケーションをリモートで起動すると、次の警告が表示されます。

Could not load shared library symbols for 7 libraries, e.g. libcustom-stuff.so.1.
Use the "info sharedlibrary" command to see the complete listing.
Do you need "set solib-search-path" or "set sysroot"?

私のデバッガーは、これらの画像に示すように QtCreator を使用してセットアップされています (画像 #3 で「ターゲット パス」と「パス」の両方を切り替えましたが、役に立たなかったことに注意してください。 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

私の「キット」は次のように設定されています:

ここに画像の説明を入力

Qt Creator 内の「Debugger Log」に「コマンド」を入力しました。

info sharedlibrary

私が応答を得たのは:

>~"From        To          Syms Read   Shared Object Library\n"
>~"0x400007e0  0x40011bf0  Yes         /home/user/proj/output/buildroot/host/usr/arm-buildroot-linux-gnueabi/sysroot/lib/ld-linux.so.3\n"
>~"                        No          libcustom-stuff.so.1\n"
>~"0x4006d018  0x400d7124  Yes         /home/user/proj/output/buildroot/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libQtDBus.so.4\n"
>~"0x401065c4  0x4013dd18  Yes         /home/user/proj/output/buildroot/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libQtXml.so.4\n"
>~"0x40172430  0x4024c1b4  Yes         /home/user/proj/output/buildroot/host/usr/arm-buildroot-linux-gnueabi/sysroot/usr/lib/libQtNetwork.so.4\n"

また、ライブラリとアプリの両方が次のもので構築されていることも確認しました。

CONFIG+=declarative_debug

ライブラリとアプリの両方の [コンパイル出力] ペインに、「-g」フラグが表示されます。

どちらもファイルシステムの同じディレクトリにあるので、何が起こっているのでしょう! アプリでブレークポイントをデバッグおよび設定できますが、ライブラリ呼び出しにステップインできないのはなぜですか? どんなアイデアでも大歓迎です。

アップデート:

kikeenrique の提案に従って、Ubuntu ホスト (ARM ターゲットではない) からデバッグ シンボルをロードしようとしました。

GNU gdb (Ubuntu/Linaro 7.4-0~69~lucid1) 7.4
Copyright (C) 2012 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Welcome to Fluke GDB Init Script for QtCreator
Reading symbols from /home/user/proj/output/exported-nfs/home/user/libcustom-stuff.so.1.0.0...done.
(gdb)

GDBは少なくともシンボルをロードできるようです..

4

1 に答える 1

6

リモート アプリに別のアーキテクチャを使用していますか?

それらが異なる場合は、同じ gdb サーバーとクライアント アーチを使用する必要があります。

プロジェクトで LD_LIBRARY_PATH を設定してみてください->ビルドと実行->ビルド環境で、ライブラリへのパスを指定してください。

于 2013-06-03T14:14:28.070 に答える