Eclipse CDTのLinuxボックスでのクロスデバッグWindowsアプリケーション
-
05-07-2019 - |
質問
WindowsからUbuntu Linuxに移行しました。ここで、開発環境をセットアップしたいと思います。問題は、私が必要なことです
- Visual Studioに匹敵するC / C ++ IDE
- Windows PEバイナリを生成する方法
- Windows PEバイナリをデバッグする方法
初めてCode :: Blocksを試しました。 こちらクロス開発用に設定するためのガイドを見つけたので、管理しました「Hello World」を取得するにはWineでコンパイルおよび実行されます。さらに、デバッグも機能しました。
しかし、Eclipse + CDTプラグインははるかに高度なIDEであることがわかりました。しばらく時間をかけて、プロジェクトをコンパイルしてリンクしました。
今、Eclipse CDT内で動作するGDBのMinGW Insightバージョンを取得しようとしています。 Code :: Blocksガイドで説明されているデバッガを使用する簡単な方法はもう機能しません。 「セッションの作成中にエラーが発生しました」というメッセージが引き続き表示されるメッセージ。
だから私の質問は、EclipseのデバッガーバックエンドとしてWineの下でMinGW GDBをどのように使用できますか? または、Linux-> Windowsのクロス開発に最適なIDEは何ですか?
解決
まだ誰もこれに答えていないのだろうか。
-
QtCreator。その名前と混同しないでください。QtCreatorは、あらゆる種類のC ++コードとうまく機能します。Qtを使用してコーディングする必要はありません。これはFOSS Visual Studioとまったく同じです。「オンザフライ」での構文チェックもあります。
-
MinGW。言うまでもなく、Win PE実行可能ファイルを作成するだけで、動作します。リポジトリで利用可能です。 Windows GUIアプリケーションには、PEヘッダーセットに特別なビットがあることに注意してください。そのため、MinGWでGUIアプリケーションを作成するには、オプション
-mwindows
を渡してこのビットを設定する必要があります。 -
これは問題です。本当に:私はWindowsアプリケーションをデバッグしようとしていますが、それを行う方法がまだ見つかりませんでした。あなたが私の熊手を踏まないようにするために、今までここで試したことをここで思い出します:
-
winedbg 。おそらく動作するはずですが、私にとっては動作しませんでした。ブレークポイントを設定すると、つまり
br 43
のように、ブレークポイントを追加できません(不明なアドレス7b860807)
と表示されます。 -
winedbg 。ええ、しかし、今回はこの
winedbg --gbd
のように使用して、コマンドをgdb
にプロキシするようにします。おそらくこれがアプリケーションをデバッグする唯一の方法ですが、欠点があります。まず、アプリケーションを再起動するにはデバッガを終了する必要があります。run
と入力すると、リモートターゲットはこれをサポートしていないと表示されます。第二に、マルチスレッドアプリケーションをデバッグする方法すらわかりません。最初にこれを開始したときに、ノンストップモードが要求されましたが、リモートはノンストップをサポートしていません
というエラーに出くわしました。ブレークポイント1を挿入できません
およびアドレス0x401654のメモリにアクセスできません
。そのため、この作業を行うには、.gdbinit
ファイルの名前をに変更する必要がありました(つまり、ノンストップモードが設定されています)。 -
gdb.exe 。私は方法を見つけたと確信していました。Windowsバージョンの
gdb
を使用するだけで問題が解決するはずです。さらに、私にとっては、私はEmacsの人間なので、ネイティブgdbを使用したデバッグとまったく同じです。しかし悲しいかな、windows gdbは機能しませんでした。実行してコマンドを入力しても、何も起こりません。 Ctrl-c および Ctrl-z コマンドでのみ反応します。空き時間にメーリングリストで質問をするつもりです。さて、今は使用できません...
-
では、デバッグで何をするのでしょうか?ほとんどの場合、 WINE で動作する別のWindowsデバッガを探します。正しく思い出せば、OllyDbgは機能しましたが、現時点でソースコードを表示する方法がわかりません。
他のヒント
NetBeans を試すことができます。無料のオープンソースです およびクロスプラットフォームサポートIDE。
VMでWindowsを実行しますか?
真剣に、あなたの質問は良いですが、おそらく答えを見つけるのに時間を費やす価値はありません(特に:誰も準備ができている答えを持っているように思われないので)。実際に行うべき作業がある場合は、ネイティブWindowsまたはVM内のWindowsが答えです。