タグ

ブックマーク / www.keshi.org (7)

  • Binary 2.0 Conference 2006 - ほげめも

    先週末に Binary 2.0 カンファレンス 2006 が開催されました。どの発表もたいへん興味深くおもしろかったと思います。 わたしもライトニングトークのプレゼンテーションではいい汗を流させていただきました。 発表スライドの PDF ファイルはこちらにあります。 以下は自分のプレゼンテーションの解説および反省文です。 まず発表タイトル "tty hacks for PS3 Linux" の意図したところは、 「RSX(GPU) も使えず制約の多い PS3 Linux 環境では X11 なんか使わずに Linux のあやしい tty/console ioctl を使いこなし ps3fb を直にいじっていい気分になろう」ということだったのですが、 プレゼンテーションプログラムや Wii Remote (Wii リモコン) いじりにかまけていたら 準備時間が足りなくなり、まったくそのような話

    kosaki
    kosaki 2006/12/18
    Cube Presenter のソースとか
  • Write Great Code Vol. 2 低いレベルで考え、高いレベルで書く - ほげめも

    Randall Hyde 著 " Write Great Code: Thinking Low-level, Writing High-level" の日語版「Write Great Code Vol. 2 低いレベルで考え、高いレベルで書く」が日発売されました。 昨年出版され、バイナリ界隈で好評を博した前著日語版「Write Great Code Vol. 1 ハードウェアを知り、ソフトウェアを書く」の続編です。今回は Vol. 1 を担当した強力監訳陣の皆様と一緒に私も監訳に関わらせていただきましたので、簡単に内容を紹介させていただきます。 推薦の辞 「Write Great Code Vol. 2 低いレベルで考え、高いレベルで書く」は、高級言語(高いレベル)で書かれ機械語(低いレベル)にコンパイルされるプログラムのパフォーマンスがテーマのです。 GCC や Visual C

    kosaki
    kosaki 2006/12/06
  • gdb hacks - ターゲットプロセス内の関数を呼び出す - ほげめも

    gdb は ptrace(2) システムコールの便利なフロントエンドインタフェースとして使えます。特にターゲットプロセス内の関数を式の中で呼ぶことができる機能は強力で、ptrace の attach 機能と組み合わせて使えば、動作中のプロセスに対してちょっかいを出すことが簡単にできます。 単純な活用例をいくつか紹介します。以下は i386 の Debian GNU/Linux (sid) のシステムで実験しました。gdb は 6.4 より前のバージョンではうまく動かない例があります。 % ps x | grep firefox 3616 ? Rl 19:40 /usr/lib/firefox/firefox-bin -a firefox % gdb -q -p 3616 (gdb) p chdir("/") [Switching to Thread -1221168480 (LWP 361

    kosaki
    kosaki 2006/07/19
  • gdb hacks - gdb とターゲットプロセスとの通信を観察する - ほげめも

    gdb hacks 第 2 回。今回は以下のトピックを扱います。 gdb が関数の呼び出しでターゲットプロセス中に作成するデータ構造 gdb とターゲットプロセスとの通信を観察する方法 サンプルデバッグセッションのログを gdb_target_debug.txt に用意していますので参照してください。実験環境は例によって i386 の Debian GNU/Linux (sid) です。 gdb とターゲットプロセスとのやりとりは、以下のように 3 つほどデバッグスイッチを有効にすると観察することができます (infrun デバッグスイッチは gdb 6.4 以降から使えます)。 119 (gdb) set debug target 1 120 (gdb) set debug infrun 1 121 (gdb) set debug lin-lwp 1 122 (gdb) p chdir(

    kosaki
    kosaki 2006/07/19
  • gdb hacks - gdb を電卓の代わりに使う - ほげめも

    gdb hacks 第 3 回。今回は以下のトピックを扱います。 gdb を電卓の代わりに使う gdb が扱うシンボルの型情報 筆者は gdb を電卓代わりによく使っています。以下のように出力フォーマットを手軽に指定できること、C の表現式がそのまま使えること、前の計算結果を簡単に参照できることなど、他の電卓プログラムにはない魅力があります。bc や irb と比較しても gdb はよりプログラマ向きの電卓なのではないかと思います。 % gdb (gdb) p 123+456+789 $1 = 1368 (gdb) p 123+0456+0x789 $2 = 2354 (gdb) p/o $2 $3 = 04462 (gdb) p/x $3 $4 = 0x932 (gdb) p/t $4 $5 = 100100110010 (gdb) p/x 'a' $6 = 0x61 (gdb) p/c

    kosaki
    kosaki 2006/07/19
  • gdb hacks - ハードウェアのデバッグ機能を使う (前編) - ほげめも

    gdb hacks 第 5 回。プロセッサの中にはデバッグ支援機能をハードウェアで持つものがあり、例えば IA-32 アーキテクチャでは 8 のデバッグレジスタ (DR0-DR7) というものが用意されています。gdb はこれをどのように使用しているかを見てみます。 IA-32 のデバッグ機能については Intel のマニュアル IA-32 Intel® Architecture Software Developer's Manual, Volume 3B: System Programming Guide, Part 2 の CHAPTER 18 Debugging and Performance Monitoring に完全な解説があります。 はしょって説明すると、DR0-DR3 の 4 つのレジスタで指定したリニアアドレスの示すメモリ領域にプロセッサのアクセスがあると、INT 1

    kosaki
    kosaki 2006/07/19
  • gdb hacks - ハードウェアのデバッグ機能を使う (後編) - ほげめも

    gdb hacks 第 6 回。前回は IA-32 で gdb がデバッグレジスタをどのように活用しているかを見ました。今回はデバッグレジスタをプロセスが自分自身で利用する方法について考えてみます。 IA-32 のデバッグレジスタ DR0-DR7 へのアクセスは、リアルモードまたは特権順位 0 のプロテクトモードでしか許されていません。Linux では ptrace システムコールを使ってカーネルに読み書きしてもらうことになります。 しかしながらプロセスは自分自身に対して ptrace することはできません。そこで、自分のデバッグレジスタにアクセスしたい場合は fork を使って子プロセスに ptrace をしてもらいます。 とりあえずデバッグレジスタに値を設定する関数を書いてみます (エラーチェックなどはいいかげんですので注意してください)。 #include <sys/user.h>

    kosaki
    kosaki 2006/07/19
  • 1