タグ

ブックマーク / 0xcc.net (3)

  • デバッガの理論と実装 - bkブログ

    デバッガの理論と実装 しばらく前に買ってつまみ読みしかしていなかった『デバッガの理論と実装』を最初からまとめて読みました。その名の通りデバッガの理論と実装についての解説書です。 書は特定のデバッガに内容を限定せず、各種 OS のデバッガや、 Java のデバッガなど、さまざまなデバッガに関する話題を幅広く扱っています。デバッガの実装の詳細は実行環境の OS やプロセッサと密接に関わっていますが、ブレークポイントやステッピングなどのコンセプトはどのデバッガでも共通しています。 書では、これらの基的なデバッグ機能を実現するためのアルゴリズムや、 OS の API、プロセッサの機能について詳しく解説されています。コンパイラの最適化がデバッガに与える影響や、デバッガのマルチスレッド対応といった比較的込み入った話題も扱っています。 自分でデバッガを実装することはほとんどないと思いますが、デバッ

  • Doug Lea の malloc (dlmalloc) - bkブログ

    Doug Lea の malloc (dlmalloc) 小さなオブジェクトを大量に new しまくるプログラムを C++ で書いたところ、処理時間の多くが malloc() に費やされていることがわかりました。このような場合、自前でメモリ管理を行って最適化するという方法がありますが、なかなか大変です。 そこで、安易に高速な malloc に置き換えてみようということで、 Doug Lea の malloc (通称 dlmalloc) の最新版を試してみました。 dlmalloc の使い方 dlmalloc は 1ファイルをダウンロードしてビルドすれば使えます。次のように実行すると共有ライブラリ libdlmalloc.so を作れます。現時点でのバージョンは 2.8.3 でした。 % wget ftp://g.oswego.edu/pub/misc/malloc.c % gcc -O2

  • 普通のやつらの下を行け: C でバックトレース表示 - bkブログ

    普通のやつらの下を行け: C でバックトレース表示 普通のやつらの下を行けの第2回として、今回は glibc の関数を使って C でバックトレース (スタックトレース) の表示を行ってみます。 バックトレースとは バックトレースとは、大ざっぱに言うと、現在の関数に至るまでの道筋です。たとえば、次の Ruby プログラムを実行すると、 1 / 0 の行で例外が発生して、バックトレースの表示とともにプログラムは異常終了します。 def foo 1 / 0 end def main foo end main この例では main から foo を呼び foo の中の 1 / 0 の部分で例外が発生しています。 % ruby divide-by-zero.rb divide-by-zero.rb:2:in `/': divided by 0 (ZeroDivisionError) from div

  • 1