3

デバッガーの設計と開発に関する適切なチュートリアルはどこにありますか? 徹底的に検索しましたが、このトピックに関する一般的な記事はわずかしか見つかりませんでした。詳細を知る必要があります: アプリケーションにどのようにアタッチされているか、ブレークポイントを設定する方法とメモリ内の場所、スタック トレースを読み取る方法は? また、デバッガの一般的な設計にも興味があります。

4

3 に答える 3

6

デバッガーの作成は簡単な作業ではなく、使用している基盤となるプラットフォームと、デバッガーを作成している言語の両方に関する深い知識が必要です。

私が過去に出会ったいくつかの記事は、この件に関して特に役立つと思いました:

  • Eli Bendersky の「How debuggers work」。その徹底ぶりのおかげで、これはかなり役に立ちました。彼は、デバッガーが行うことのすべての重要な部分、それがどのように機能するか、および内部でどのようにこれを達成するかをカバーしています。彼は、ドワーフ デバッグ フォーマットを使用してデバッグ セッションに注釈を付ける方法についてもかなりの部分をカバーしています。彼はこれを *nix のようなプラットフォームで取り上げていますが、彼が説明する概念の多くは Windows でも同様に適用できます。
  • DebugInfo.com デバッグAPI の例. win32 プラットフォームで作業するつもりなら、ここにある例が役に立ちます。これは、win32 デバッグ API を使用して、デバッガーのように「動作」できるプロセスを作成する方法の実際の例を示しています。デバッグ対象を起動する方法、実行中のプロセスにアタッチする方法、およびデバッグ API から生成されたデバッグ イベントを処理する方法の例が含まれています。
  • モブデバッグ. これは ~1.4kloc で純粋な lua に実装されたリモート lua デバッガーです。これは、ルビー デバッガーに関する補数の deivid の回答です。低水準言語用でなくても、デバッガーの実際の実装を見ると役立つことがよくあります。これは、「ベアメタル」言語で処理しなければならないすべての下位レベルの詳細に行き詰まることなく、デバッガーが行う必要があることの全体像を把握するための簡単な場所です。
  • pydbg。以下のデバッグ API を使用して Python で記述された Windows デバッガー。
  • jewdbg . Python で書かれた別の Windows デバッガー。pydbg よりも少し小さく、丸みを帯びた機能ではありませんが、学習する実装例を探している場合に最適です。
  • MSDN デバッグ API。Windows によって提供される基本的なデバッグ プリミティブとビルディング ブロックのプライマリ リファレンスとドキュメント。Windows 用の独自のデバッガーを開発する場合は、ここで提供されているものの多くが必要になります。
于 2013-09-10T20:06:17.497 に答える
3

申し訳ありませんが、私はそのようなガイドを知りません...私のお勧めは、あなたが選んだオープンソースプログラミング言語を選び、デバッガーのソースコードを読むことです...それが私がしたことで、うまくいきました。

具体的な例として、私は ruby​​ デバッガーを知っています。

  • これは、「命令実行」、「メソッド呼び出し」、「メソッド戻り」などの特定のイベントのトレースポイントを設定し、物事を追跡するコールバック関数を定義することによって機能します。たとえば、命令が実行されると、デバッガーが制御を取得し、その行にブレークポイントがあるかどうかを確認します。次に、前のチェックに応じて、ユーザーまたはデバッグ中のプログラムに制御を返します。
  • ブレークポイントは、デバッガーによってグローバル変数に保持されます。
  • スタック トレースは通常どおりにチェックされます (Ruby はそれを行うためのツールを提供します)。
于 2013-08-27T16:37:20.243 に答える
2

あなたはこれを達成するための長い旅に直面しています。それは私の TODO リストにもあります ;) tuts4you と codeproject をチェックしてください。良いチュートリアルがいくつかあります。

于 2013-08-27T17:39:11.200 に答える