デバッガ妄想

きっかけはもちろんあの本である。
id:yaneura氏の『解析魔法少女美咲ちゃんマジカルオープン!』(ASIN:4798008532)


購入して読んでみた。とても勉強になった。(ここにid:yaneuraoさんからコメントを頂く前の話です。)
ネタばれは申し訳ないので、端的に書くとそこで紹介されているデバッガの使い方のところでふと思ったわけである。


「あれ?デバッガでデバッグとか言うけど。これってMonaで動くの?そもそもデバッガのうらの仕組みがまったく分からないや」


なので、デバッガの裏側を妄想してみようというのがこのコーナーである。
趣旨はとりあえず自分で仕組みを妄想するだけなので実際にデバッガがどうなっているかはあまり気にしません。

覗き見

デバッガではプロセスの情報がいろいろ覗き見できる。
たとえば以下のようなものたち。

  • スタック
  • 関数の引数中身(上とかぶるけど)
  • 変数
  • レジスタ
  • プロセスがロードされたアドレス
  • メモリの中身など(上とかぶるけど)


こいつらは、Monaで参照することが可能か?
APIはないけどそういう仕組みは提供が可能だと思う。


具体的には

  • スタック⇒メモリなので他のプロセスからそのプロセスのメモリを覗けばよい
  • 関数の引数中身⇒同上
  • 変数⇒同上
  • レジスタ⇒スレッド構造体にある
  • プロセスがロードされたアドレス⇒見える
  • メモリの中身など(上とかぶるけど)⇒メモリなので他のプロセスからそのプロセスのメモリを覗けばよい


ということで覗き見は可能というのが結論です。うーむなかなか楽しいぞ(自分だけ?