とぴやまのブログ(アーカイブ)

元はてなダイアリー

デバッガの理論と実装

デバッガの理論と実装 (ASCII SOFTWARE SCIENCE Language)

デバッガの理論と実装 (ASCII SOFTWARE SCIENCE Language)

初版が1998年2月、わたしが現職に就いたときには既に売られてた… もっと速く買っておくべきだったと反省したくなった一冊。

デバッガがどのように実装されているかについての本で、かなりディープでマニアックな領域ではある。

が、組み込みソフトで OS より下位層をデバッグをする身としては、デバッガがどうやって動いているか、デバッガが CPU・メモリに対して何を行うかを知る必要がある。組み込みソフトでなくても OS 周辺を扱っている人は是非読んで欲しい。高いけど。

デバッガは使えればそれで良い、どう動いているかを知るより他にやることがある、という人でもこの1点だけは覚えておくべし。

ブレークポイントは、置いた場所のプログラムコードをデバッガに通知する処理に書き換えることで、実装している。」


コードを書き換えている。本当の実行コードではない。*1 だから、実行コード部分のチェックサムを取って書き換えられているかチェックするプログラムでブレークポイントを置くと、チェックサムが一致しなくて動かない。

また、古い本であるので最新技術はフォローしていない。もっとも、PerlPythonなどの LL ならインタラクティブシェルが実行環境兼デバッグ環境なので必要ないけど。

*1:CPUの種類によっては、このアドレスを踏むとトラップする、という機能を持っているものもあるので、コード書き換えがブレークポイントの実装の全てという訳ではない。