2016-06-28 21 views
2

QtをクロスコンパイルしてSDカードイメージを作成し、losetupを使用してマウントしました。コンパイルは今すぐ直接sshfsマウントに比べて高速です。アプリケーションは正常に実行されます。今、私は遅い死んでいるデバッグしたいと思うとデバッグのためにdevのマシンにファイルをコピーしているように見えます。私はgdb-multiarchを使用していますし、(ターゲット・ボード上)gdbserverを持っている非常に遅いデバッグ

File transfers from remote targets can be slow. Use "set sysroot" to access files locally instead.

:私はこの提案を参照してください。

私はここで迷っています。このオプションを設定する場所は?私は--sysroot引数をバイナリに提供しましたが、使用しません。どんな助けでも本当に感謝しています。

更新:Qt Creatorを使用して開発を行います。

答えて

2

sysrootはgdb設定です。 set sysrootコマンドでgdbに設定することができます。たとえば、次のように

(gdb) help set sysroot 
Set an alternate system root. 
The system root is used to load absolute shared library symbol files. 
For other (relative) files, you can add directories using 
`set solib-search-path'. 

GDBはそれが必要とする様々なファイルを見つけようとどのようにこの設定を制御し、そしてあなたがデバッグしている実行可能ファイルおよび共有ライブラリに関する。

gdbの最近のバージョンでは、デフォルトでsysrootからtarget:に変更されています。これは、「ターゲットからファイルを取得します」という意味です。ローカルでデバッグしている場合は、ローカルのファイルシステムにアクセスするだけです。リモートでデバッグしていて接続が遅い場合、これは少し苦しいことがあります。これをより速くするには、必要なすべてのファイルのローカルコピーを保存してから、set sysrootを使用して、このローカルコピーでgdbを指定します。

この方法の主な問題は、ローカルコピーがリモートと同期していないと、gdbを混乱させ、ナンセンス結果を得ることができないことです。私は確かではありませんが、おそらくビルドIDを有効にすると、この問題は多少緩和されます(理論的にはgdbはビルドIDの不一致を検出して警告するだけです)。

+0

私はQt Creatorを使用しています。ありがとう – ramtheconqueror

+0

@ramtheconquerorだから? Qt CreatorはIDEであり、デバッガではありません。これはgdbを使用してターゲット上のコードをデバッグします。 Qt Creatorのデバッガのログ/コマンドペインからデバッガコマンドを発行できます。それを表示するには、 'Window-> Views-> Debugger Log'というメニュー項目に行きます。そこでは、sysroot設定を変更できます。 –