2013-10-27 15 views
5

QtCreator IDEを使用してmingwでコンパイルされた非Qt C DLLを作成しました。QtCreatorを使用してDLLプロジェクトをデバッグするには?

DLLをプロセスに挿入すると、DLLによってプロセスが特定のコード行でクラッシュします。私はこの行がOutputDebugStringの使用を通じて犯人であることを発見しました。私は行を修正する方法を知っていて、その行が変更されたときにDLLが機能します。しかし、デバッガの使い方を学ぶ目的で、私はその行を壊したままにしておきました。

QtCreatorデバッガを使用して、同じ正確な行が問題を引き起こしていることを確認するにはどうすればよいですか? QtCreatorは何のEXEが存在しないため、次のダイアログでF5結果を押して、デバッグモードでコンパイルするように設定されている場合:

enter image description here

+1

問題を再現し、それをデバッガで実行するライブラリとリンクする小さなプログラムを作成します。それとも、「注射する」ことで正確にはどういう意味ですか? –

+0

@FrankOsterfeld:http://ja.wikipedia.org/wiki/DLL_injection犠牲者のproccesのメモリを編集する低レベルのDLLファイルです。私は、DLL注入の仕組みのためにライブラリとリンクすることはできません。別のプロセスのメモリを編集するのはなぜですか?私はAssault Cubeと呼ばれるオープンソースプロジェクトのメモリを編集しています。目的は、CコードがASMにどのように変換され、どのようにコンピュータが下位レベルで動作するかを探求し、さらに学ぶことです。 – user2924308

+1

さて、上記のウィンドウでdllと引数を使用する実行可能ファイル名を入力すれば、QtCreatorが残りの処理を行います。 – Lol4t0

答えて

3

ソリューションは、DLLを注入する前に、実行可能ファイルに付属のデバッガを実行することです。 DLLはデバッグ構成でビルドされ、そのプロジェクトを開く必要があります。命令hereを使用してデバッガを接続し、DLLを注入します。実行可能なクラッシュが発生した場合、選択したスタックフレームをクリックすると、スタックトレースとDLLコードが表示されます。しかし、注意してください:プロセスのメモリを破壊した場合、スタックトレースが不完全であるか正しくない可能性があります。

+0

驚くばかり!私はこれが不可能であることはほとんど確信していた。 – user2924308

+0

@ user2924308私の答えが役に立つと分かったら、それを受け入れてください。 – Nazar554