21

リモート Linux システムでビルドおよびテストされる C コードを開発するために、Windows で Eclipse CDT を実行しています。現在、コードが Windows でコンパイルされることはありません。

CDT を使用して、gdbserver の下の Linux ターゲットでリモート プロセスを開始し、Windows ホストから gdb を接続できます。ただし、gdb は次のようなエラーですぐに失敗します。

warning: A handler for the OS ABI "GNU/Linux" is not built into this configuration
of GDB.  Attempting to continue with the default i386 settings.
[...]
Remote 'g' packet reply is too long: 74afe9bff0aee9bf02000000f4af4a00a0aee9bf[...]

2 つの Linux システム間でのデバッグは問題なく機能するため、Windows ホスト側で何か間違ったことをしていることは明らかです。私の具体的な質問は次のとおりです。

  • gdb の Cygwin バージョンは、リモートの Linux プロセスをデバッグするのに十分ですか?それとも、Windowsで実行して Linux プロセスを操作するには、特別な cross-gdb が必要ですか? もしそうなら、そのようなgdbを手に入れることができる場所はありますか?

  • gdb を使用したリモート デバッグでは、ホスト システムでシンボルを使用できる必要があります。これを達成する最も簡単な方法は何ですか?Linux ターゲットでのビルドによって生成されたシンボルを Windows ホストにコピーすることはできますか? それとも、Windows で完全なビルドを実行する必要がありますか? ターゲットにのみシンボルを提供できるように、この要件を回避する方法はありますか?

ありがとう、

-R


詳細: RSE FAQにいくつかのヒントがありますが、残念ながらまだブロックされています。FAQ では、次の 2 つのアプローチについて説明しています。

  • ssh を介してリモート システムで gdb クライアントを起動します。ここでの問題は、CDT デバッグ ランチャーの特定のフィールドがローカル システム (プロジェクト パス、実行可能パスなど) に関連付けられていることです。
  • Windows からの Linux プロセスのデバッグをサポートする gdb のクロスデバッグ バージョンをビルド/取得します。ここでの問題は、これを達成する方法に関する情報がほとんどないことです。

CDT フォーラムでもこの問題を提起しました。

4

6 に答える 6

1

Visual Studio Community Edition 2017 は、GDB クロスコンパイルおよびデバッグ ツールを備えています。これを Linux サーバーまたは Windows Linux サブシステムと組み合わせると、Linux システム用の C コードを確実に開発できます。このガイドをご覧ください。

于 2017-10-22T05:03:01.160 に答える
0

gcc/gdb を使用してクロスコンパイルまたはクロスデバッグ環境をセットアップすることは非常に難しい問題であり、最も効率的なソリューションとはほとんど言えません。Linux VM を Windows ボックスに配置して、そこでデバッグする作業は、はるかに簡単になります。本当に「向こう」をデバッグする必要がある場合は、ssh を実行してコマンドライン gdb を使用することをお勧めします。そこにソースがない場合は、管理下にある Linux VM からのリモート デバッグが実用的です。

于 2013-03-10T17:32:03.080 に答える