タグ

デバッガに関するchibahiroのブックマーク (2)

  • 古のテクニックを見せようと思ったら最近の技術の前にあっさり敗北した話

    オブジェクトについて抽象から具象まで取り混ぜて説明していた時、最も具象なレベルで見れば、オブジェクトはメモリ上に確保した領域にすぎないと説明しました。 そんな説明をしていた時、メソッドの実体ってどこにどうあるのですかと質問を受けました。人の心はどこにどうあるのですかという質問に比べると緩い質問ですが、良い質問だと思いました。こういう疑問を持つのは大事だと思うからです。自分もかつてプログラムとは結局のところどう実行されるのかが気になりました。プログラマなら誰もが通る道だと思います。 そんなわけでJavaのような箱入り娘から離れて、デレのないツンデレ娘ことC言語で古のテクニックを見せることにしました。 とりあえず次の簡単なコードから始めます。C言語は知らなくても構いません。関数fnがあって、引数に2を加算して返すことだけを読み取ってください。 #include <stdio.h>

  • デバッグにあると便利なシンボルとは? - Web/DB プログラミング徹底解説

    シンボルとは? シンボルとは、プログラムのアドレスと可読なソースコード上の名前 (シンボル) を対応させるためのものです。 またそれだけではなく、シンボルには FPO 情報を含むため、FPO フレームが混在する場合でもスタックを正しくたどることができるようになります。シンボルは拡張子 pdb のファイルに格納されています。以前のバージョンのものですと、このほかに dbg という拡張子を持つものもありますが、それは現在では pdb へのポインタを含むだけの役割を持っています。今後は pdb のみになってゆくと思われます。実際に WindowsXP ではすべて pdb ファイルに切り替えられています。 百聞は一見にしかず。始めに正しいシンボルが設定されている環境のデバッガの出力を見てください。 0:000> kv ChildEBP RetAddr Args to Child 0012ff1c

    デバッグにあると便利なシンボルとは? - Web/DB プログラミング徹底解説
  • 1