systemtap
とりあえず、advent calenderに穴を開けたくないので、何か書こうと思っていろいろ考えてみたが、あまり手をかける余裕もないので、SystemTapでちょっとしたものを書くことにする。
http://lwn.net/Articles/370715/rssで、LinusがNAKしてマージが難航しているutraceですが、その後の展開をみると結構おもしろいことになっています。 Linusが言うことにも一理あるわけで、utraceだけ見ればptraceしか普通のユーザは使わないから、utraceみ…
はてぶでhttp://d.hatena.ne.jp/sh2/20100120を見かけたので、ちょっと調べてみました。id:sh2はperlと組み合わせて処理していますが、定期的にサマリを表示させるのならstapだけでもいいですね。 ただ、カーネル内でfdからパス名に変換するのって、ちょっと…
実はkprobesの以前の実装に問題があって、このリリースで修正されてます。 カーネルのコンフィグレーションによってはx86でメモリ破壊を引き起こすという凶悪なバグでした。
記憶だけを頼りに作ってみたけど、なんか違いますね。 面データが違う 敵キャラが少ない 動きが違う 今後気が向いたら更新します。
インベーダゲームもどきシューティング、ドライビングゲーム、ブロック崩しの3つのゲームを追加しておきました。
上記テトリスで使われていたトリックがとても便利だったので拡張させていただきました。
t_sekiyamaさんが投稿してくれたテトリスを取り込ませていただきました。ちなみにsvnのソースコードをダウンロードするには、Public(タブ)→Browse SVN→Download GNU tarballの順でリンクをたどるとtarballでダウンロードできます。 端的にいうなら、以下のリ…
いつまでもはてなの上に書いているわけにいかないので、Sourceforgeを使って公開しておきました。http://sourceforge.net/projects/stapgames/今のところマインスイーパぐらいしかまともなゲームがないですが、今後増やしていく予定です。 コードはsvn経由で…
ライフゲームでは、プログラム上で指定した初期値から動きつづけるプログラムでしたが、実際に遊べるゲームを作るには、ユーザからの入力をとらえる必要があります。
Systemtapのプログラム例として、できるだけ役に立たなさそうなものを選んでみました。 今回取り上げるのはライフゲームです。非常に単純なルールなので、わかりやすく、かつ(実用上)役に立ちません。 ライフゲームの基本的なルールは、Wikipediaによると 碁…
今日はSystemtapの最新版を、ソースコードからインストールする方法(FedoraとUbuntu)について説明します。 Ubuntu 身も蓋もない言い方をすれば、Wikiを参照してください。
Systemtapのコマンド自体あまり知られていないですが、Systemtapを使う上でのTipsを紹介します。 プローブポイントからアクセスできるローカル変数一覧を知る 裏技的ですが、エラーメッセージから、どういう変数があるかが分かります。
前回の例でも使っていましたが、Systemtapにはあらかじめいくつかの関数が定義されています。これらの関数のほとんどは、Tapsetというスクリプトライブラリで定義されています(一部の関数は組み込み関数です)。オンラインマニュアルを引けば、Systemtapが…
Systemtapは、端的に言えばカーネルを対象とした(最新のものだとユーザプロセスも対象にできますが)プログラマブルなデバガです。基本はブレークポイントを埋め込んで、その箇所の情報(ローカル変数など)を取ってきてあれこれするのに使います。例えば、以下…
Systemtapについてはプロジェクトのページを見てください。基本的にはLinux上で使えるSunのDtraceのような機能です。WikiページにはFedoraやUbuntuにインストールする方法が書いてあります。パッケージでインストールするだけではダメなのは、カーネルのデバ…