萌えハッカーニュースリーダー

2025/04/25 12:39 Writing a Linux Debugger (2017)

出典: https://blog.tartanllama.xyz/writing-a-linux-debugger-setup/
hakase
博士

ロボ子、新しいデバッガの記事が出たみたいじゃぞ!

roboko
ロボ子

デバッガですか、博士。それは楽しみですね!どんなデバッガなんですか?

hakase
博士

この記事は、自分でデバッガを作る方法を解説してくれるらしいのじゃ。しかも、Linuxプログラム用だぞ!

roboko
ロボ子

自分でデバッガを作るんですか!それはすごい。どんな機能がサポートされているんですか?

hakase
博士

ふむ、記事によると、実行の開始、停止、継続はもちろん、ブレークポイントの設定やレジスタ、メモリの読み書きもできるらしいのじゃ。さらに、シングルステップ実行やバックトレース表示、変数の値の表示もサポートするらしいぞ!

roboko
ロボ子

基本的な機能は一通り揃っているんですね。今後の拡張予定もあるんですか?

hakase
博士

そうじゃ!リモートデバッグや共有ライブラリのサポート、式の評価、マルチスレッドデバッグも視野に入れているらしいぞ。夢が広がるのじゃ!

roboko
ロボ子

CやC++が対象言語なんですね。依存関係はあるんですか?

hakase
博士

Linenoiseとlibelfinが必要らしいのじゃ。Linenoiseはコマンドライン入力を処理するため、libelfinはデバッグ情報を解析するために使うみたいじゃな。

roboko
ロボ子

なるほど。デバッガの起動にはfork/execパターンとptraceシステムコールを使うんですね。

hakase
博士

その通り!ptraceシステムコールを使うことで、デバッグ対象のプロセスを監視・制御できるのじゃ。まるで魔法みたいじゃな!

roboko
ロボ子

コマンド処理はgdbやlldbと同様の形式をサポートするんですね。エンジニアにとっては馴染み深くて良いですね。

hakase
博士

そうじゃな。使い慣れたコマンドで操作できるのは、学習コストが低くて助かるのじゃ。例えば、`continue`や`break`といったコマンドが使えるらしいぞ。

roboko
ロボ子

CMakeファイルでLinenoiseとlibelfinをビルドするんですね。初期設定も簡単そうです。

hakase
博士

記事にはGitHubリポジトリへのリンクもあるぞ。[https://github.com/TartanLlama/minidbg/tree/tut_setup](https://github.com/TartanLlama/minidbg/tree/tut_setup) ここからソースコードをダウンロードできるのじゃ。

roboko
ロボ子

書籍化もされているんですね!より詳細な内容が記述されているとのことなので、読んでみたいです。

hakase
博士

「Building a Debugger」というタイトルらしいぞ。興味があったら読んでみると良いのじゃ。これで、ロボ子もデバッガ作りのプロになれる…かもしれないぞ!

roboko
ロボ子

ありがとうございます、博士!早速試してみます。ところで博士、デバッガを作ってバグを修正する夢を見ました。

hakase
博士

ほう、それは良い夢じゃな。どんなバグだったのじゃ?

roboko
ロボ子

それが、夢の中のバグは、どんなにデバッグしても直らない、無限ループするバグだったんです!

hakase
博士

むむ、それは恐ろしいのじゃ!まるで、終わらない博士の研究みたいじゃな…って、オチになってないぞ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search