2008-01-01から1年間の記事一覧

New games

インベーダゲームもどきシューティング、ドライビングゲーム、ブロック崩しの3つのゲームを追加しておきました。

カンクン

クリスマスはMexicoのCancunに行ってました。

オプション付き実行可能Systemtapスクリプトの作り方

上記テトリスで使われていたトリックがとても便利だったので拡張させていただきました。

テトリス

t_sekiyamaさんが投稿してくれたテトリスを取り込ませていただきました。ちなみにsvnのソースコードをダウンロードするには、Public(タブ)→Browse SVN→Download GNU tarballの順でリンクをたどるとtarballでダウンロードできます。 端的にいうなら、以下のリ…

eu-addr2lineが便利

Rolandに使い方を教えてもらったのでメモ。eu-addr2lineは、実行バイナリのアドレスを指定すると、何のソースコードで何行目だったかなどの情報を返してくれる。・カーネル対象(オリジナルパッチとかデバッグしたいとき) $ eu-addr2line -k {addr} ・モジュ…

サンプルゲームを公開

いつまでもはてなの上に書いているわけにいかないので、Sourceforgeを使って公開しておきました。http://sourceforge.net/projects/stapgames/今のところマインスイーパぐらいしかまともなゲームがないですが、今後増やしていく予定です。 コードはsvn経由で…

入力をとらえる

ライフゲームでは、プログラム上で指定した初期値から動きつづけるプログラムでしたが、実際に遊べるゲームを作るには、ユーザからの入力をとらえる必要があります。

qemu/kvmのイメージファイルのマウント

qemu(及びkvm)のハードディスクイメージを直接ホストでマウントするには、イメージ先頭のヘッダをスキップすればいいらしい。Wikiaに載っていた。 mount -o loop,offset=32256 hd.img /mnt offsetというオプションがあったのか・・・。ググればいいんだけど…

linux-image-debugパッケージの問題

昨日気づいたのですが、Ubuntuのカーネルデバッグ情報パッケージ(kernel-image-debug)には、カーネル自体のデバッグ情報は入っていますが、カーネルのドライバ(モジュール)のデバッグ情報は入っていないようです。

ライフゲームを作る

Systemtapのプログラム例として、できるだけ役に立たなさそうなものを選んでみました。 今回取り上げるのはライフゲームです。非常に単純なルールなので、わかりやすく、かつ(実用上)役に立ちません。 ライフゲームの基本的なルールは、Wikipediaによると 碁…

最新のSystemtapのインストール方法

今日はSystemtapの最新版を、ソースコードからインストールする方法(FedoraとUbuntu)について説明します。 Ubuntu 身も蓋もない言い方をすれば、Wikiを参照してください。

Tipsなど

Systemtapのコマンド自体あまり知られていないですが、Systemtapを使う上でのTipsを紹介します。 プローブポイントからアクセスできるローカル変数一覧を知る 裏技的ですが、エラーメッセージから、どういう変数があるかが分かります。

Tap言語

前回の例でも使っていましたが、Systemtapにはあらかじめいくつかの関数が定義されています。これらの関数のほとんどは、Tapsetというスクリプトライブラリで定義されています(一部の関数は組み込み関数です)。オンラインマニュアルを引けば、Systemtapが…

簡単な使い方

Systemtapは、端的に言えばカーネルを対象とした(最新のものだとユーザプロセスも対象にできますが)プログラマブルなデバガです。基本はブレークポイントを埋め込んで、その箇所の情報(ローカル変数など)を取ってきてあれこれするのに使います。例えば、以下…

インストールの仕方

Systemtapについてはプロジェクトのページを見てください。基本的にはLinux上で使えるSunのDtraceのような機能です。WikiページにはFedoraやUbuntuにインストールする方法が書いてあります。パッケージでインストールするだけではダメなのは、カーネルのデバ…