タグ

ブックマーク / shinh.hatenablog.com (4)

  • デバッガが使えないパターン - 兼雑記

    http://practical-scheme.net/wiliki/wiliki.cgi?Shiro (2009/04/13) 面白いです。 shiro さんが書かれたものの亜種になるものも多いですが、少し私も書いてみようかと。スレッドやらイベントは下記とかぶる。 http://d.hatena.ne.jp/shinichiro_h/20081001#1222794259 多スレッド 少ないうちはいいんですが、多いとバグに関係があるスレッドを探すだけでかなり大変。 race condition 時は「明らかな症状が出る時点では既に痕跡が消えているケース」の亜種になるかなと。 あとタスクキューみたいなのがからむと次の問題とかぶる。 イベントモデル シングルスレッドで select をぶん回してる時なんかに、返事来たらこの callback 実行してねーと asynchronous な実行を

    デバッガが使えないパターン - 兼雑記
  • 2008-07-01 - 兼雑記 ■ トランポリン 02:08

    http://d.hatena.ne.jp/hayamiz/20080629/1214745930 これはきっと shiro さんがすごく面白いコメントを書いてくださるんだろう…と思ってたけどそうでもないみたいなので、まとまりのない話を書く。 まずなんか「なんでも継続」にある http://practical-scheme.net/docs/cont-j.html 一般には、関数func1から関数func2を直接呼べない場合に「func2を呼ぶという継続」をスタックにプッシュして、 func1から一度抜けるテクニックを「トランポリン」と呼ぶ。 というのが一般にトランポリンなのか、っていうと、よくわからんけど私はもちょい一般に、 func1 がなんらかの手段で生成されたコードを通って func2 を呼ぶのがトランポリンなんじゃないかなぁとか思ってました。少なくとも GCC は func1 が

    2008-07-01 - 兼雑記 ■ トランポリン 02:08
  • GCC とメタプログラミング - 兼雑記

    GCC やっぱすごいなぁという話 まぁコード生成する類のものは全部メタプログラミングだと考えるとします。当時のkinaba先生世界観。例としては C のコードを cpp で C にするとか、 C のコードを gcc で asm にするとか autotools でほげほげとか。 それはともかく最近思いついた(全然コードを読まない)コードリーディング技法として make してみてその標準出力をゆっくり眺めるというものがあります。ファイルの依存関係がわかれば割と内容は予測がついたりします。あと GCC のコード眺める技法として gdb で適当に break しかけてバックトレースを見ると普通に追うよりラクというのがあるのですがそれは別の話。 でまぁ make の出力とか見てると GCC ってすごいメタプログラミングの宝庫だなぁと思ったのでした。特にフロントエンド側よりバックエンド側がにんともかん

    GCC とメタプログラミング - 兼雑記
  • 息を吸うように objdump 2007-12-16 - 兼雑記

    このへんで書いた、どうなってるか自信が無いことがあったらとりあえず objdump しちゃえという話…とか言うと「アセンブリは…」みたいな雰囲気になることが多い気がするんですが、正直アセンブリなんか読めなくてもコードがどうなってるかくらいはわかるよん、という当たり前の話。 #include <stdio.h> struct S { explicit S(int x) : x_(x) {} int x() const { return x_; } int x_; }; int main() { S s(3); printf("%d\n", s.x()); } とりあえずこんなコードをインライン化されるか知りたいとする。とりあえず -g つきでコンパイルして objdump 。 % g++ -g inline.cc -o inline % objdump -S -C inline | lvコツ

    息を吸うように objdump 2007-12-16 - 兼雑記
  • 1