まぶち氏からptraceのサンプルない?って言われたのでstraceを紹介しました。straceはptraceの難しいところをどうしているのか見るには良いですが、初めてptraceを使う人が見るもんじゃない気がします。
入門に使えると信じて、簡単なサンプルを作ってみたので公開。Linux専用です。 ソースコードはこちらからどうぞ。
(2008年7月25日追記)需要はなさそうなものの、一応ライセンスを明確にしました。修正BSDライセンスです。
うまくいけばトレース対象のシステムコール名がずらっと表示されるはずです。以下に私の環境での実行結果を示します。
$ gcc -Wall 20080724_ptrace_simple.c $ ls -l 合計28 -rw-r--r-- 1 katsuhiro katsuhiro 8679 2008-07-24 02:12 20080724_ptrace_simple.c -rwxr-xr-x 1 katsuhiro katsuhiro 13367 2008-07-24 02:28 a.out $ ./a.out ls -la 1115: child started 1115: sys out( 11): execve 1115: sys in(122): uname 1115: sys out(122): uname 1115: sys in( 45): brk 1115: sys out( 45): brk 1115: sys in( 33): access 1115: sys out( 33): access (略) 1115: sys in( 4): write -rwxr-xr-x 1 katsuhiro katsuhiro 13367 2008-07-24 02:28 a.out 1115: sys out( 4): write 1115: sys in( 6): close 1115: sys out( 6): close 1115: sys in( 91): munmap 1115: sys out( 91): munmap 1115: sys in(252): exit_group 1115: exited, st:0
動作はDebian GNU/Linux 4.0(etch) で確認しました。さほど変なことはやっていないはずなので、最近のLinuxディストリビューションなら問題ないと思います。たぶん…。
仕組みとしてはforkした後に親プロセスは監視役、子プロセスは監視対象、で役割分担します。
親プロセスの仕事はwait -> ptrace(PTRACE_SYSCALL, ...) を繰り返すことです。子プロセスに何か変化があるとwaitから戻ってくるので、その都度何が起きたか調べます。イベントには色々ありますが、サンプルで見ている種類をざくっと紹介します。
子プロセスにシグナルを渡さないと、子プロセスがシグナルを認識できません。逆に言うと監視役の親プロセスのさじ加減次第では、子プロセスに飛んで来たシグナルを消すこともできてしまいます。ただしSIGKILLとSIGSTOPは消せません。
受け取ったシグナルがSIGTRAPだったら、システムコールの入口/出口で止まったことを表しますので、システムコール番号の解析をします。
子の仕事はptrace(PTRACE_TRACEME, ...) を実行して「監視される準備」を整えるだけです。その後は余計なことをせずに監視対象にしたいプログラムをexecしてください。
いまさらですが、日記検索機能を改善しました。
今までは過去ログ1ページまるごと検索結果で出てくるために、検索結果に出てきたページを表示させても結果がどこにあるかわからなくて、再びブラウザ検索で同じ語句を検索する羽目に陥っていました。
当サイトではせっかく日付部分に <a name="..."> を打っているわけですから、namazuに <a name="..."> を目印にsplitする設定(--html-splitオプション)をしました。すると日付単位で検索結果が出るようになります。良きかな良きかな。
こんな便利な機能があるのに今まで気付いてなかったのがちょっとショックだった…。
毎日新聞が英字版でポルノ記事やら嘘八百を書き散らしていた問題に対して、担当の記者の言い訳。
「性的な話題を取り上げると読者の反応が良かった」上に、「仕事を失うことに恐怖感があり、MDNを閉鎖する言い訳を誰にも与えたくない」といった理由から性的な内容を取り上げていた。
ITmediaの記事毎日新聞、「低俗過ぎ」英文記事問題で内部調査公表 再三の指摘放置、「深刻な失態」より引用
まさに嘘でもなんでもどんと来い。全ては金のために。なんて崇高なジャーナリズムでしょうか…。
今回の事件の重大さは、一流マスコミにも関わらず記事チェック機能がいい加減だったことが露呈したことでしょう。
今回の事件を目の当たりにすれば、英語版の記事だけじゃなく日本版の記事にも、
「嘘で誇張すると読者の反応が良かった」上に、「会社が潰れることに恐怖感があり、毎日新聞社を閉鎖する言い訳を誰にも与えたくない」といった理由から(以下略
なんて思うところはありませんか?と勘ぐりたくなります。
毎日新聞は今回「役員と元編集長を処分する。」と厳しく出ました。恐らくさっさと手じまいにしたいのでしょうが、そうもいかないでしょう。この傷は深い。
大下邸に園芸のメンバーが集まり、飲み会をしていると、まるでつくばにいるかのような錯覚が。懐かしいんだぜー。
昨日の健康的な睡眠とはうってかわって、夜更かしして酒を飲んで枕も使わない不健康な睡眠でしたが、それもまた良し!
昼までうだうだして、新大阪駅へ。地下街(一階?)のぼてじゅうでお好み焼きを食べました。昼時だったからか、かなり混んでました。昼食後、園芸のみなさんは新幹線に乗って帰って行きました…。
大下さんと「終わっちゃったねえ、楽しかったねえ。」ってな話をしつつ帰りました。楽しかった非日常も終わってしまったんだなあ…なんて、大学生の頃より寂しさが増して感じるのでした。ぜひまた行きましょう。
昨晩は温泉に浸かってゆったりした上、22時消灯だったため、朝の7時に起きても気分爽快。ここ最近体験したことのないくらいの早寝でした。
朝ご飯を食べた後、宿を出発する前に宿の近所を散策しました。宿の裏にある八幡神社や、お寺(光明山常徳寺)に行きました。お寺ではじょーと一緒に謎のメッセージ「みてござる」を発見して喜んでました。仏様が見てるのかな。何にせよ変なのw
宿を後にする前に、写真を撮りました。そのときに宿も合掌造りだったことに気付きました。びっくりだよ。気付くのがあまりに…あまりに遅すぎたんだよ。
あと特筆すべき点として、宿にいたわんこが非常に人なつこくてかわいいです。初めて見る人にも吠えないどころか、寝転がって服従ポーズです。
さらに宿の裏の八幡神社に行こうとすると後ろをトコトコついてきます。そのままどこかへ行ってしまうのかと思いきや、人の周りをくーるくーる回ってます。神社から宿に帰ろうとするとやっぱりついてきます。か、かわいすぎる…恐ろしい子…!
高山に戻り、飛騨大鍾乳洞へ。鍾乳洞に入る前に大橋コレクション館があります(2007年「金塊が盗まれた事件」で一躍有名に)。飛騨大鍾乳洞を発見した大橋さんの趣味の一品が飾られています。展示物は脈絡無くて金持ちの趣味ですよ〜という空気が出てます。撮影禁止だったのでお届けできないのが残念です。
説明も適当で何が何だかいまいちすごさが分かりません。古そうな壺の前に「古い壺」という説明が書いてあったときは大層笑った。そりゃそうだけど、あまりに適当すぎるぞw
鍾乳洞はなんと気温18度。長袖に長ズボンでも寒かったです。しかし洞窟内の急勾配を登りながら見学するため、このくらいの気温じゃないと暑さで倒れそうです。
昼は鍾乳洞のふもとにあるメシ屋で飛騨牛入りラーメン(金箔付き)を食べました。名物を適当に組み合わせたハズレ料理かと思ったら、けっこうおいしいです。
帰りは名古屋でひつまむしを食べました。うまー。
つくばに帰らなければならないちかふみさんと分かれ、一同はそのまま大阪の大下邸へ。明日へ続く。
岐阜県は飛騨高山(高山市)、そして白川郷(白川村)に行って参りました。まずは新幹線で名古屋へ、そこで園芸の皆さんと合流しました。
その後は、特急ひだで高山まで。車内で「明治時代のあんぱん」を売っていたので買いました。酒粕を使っているそうです。ほのかな酒の香りがします。
駅でレンタカー(トヨタ、アルファード)を借りて、一路白川郷へ。合掌造りの家がたくさんありました。いやまあ、当たり前なんだけどさ…。外人がいっぱいいました。白川郷・五箇山は世界遺産に登録されただけあって、世界的にも有名なんですねえ。
白川郷集落の中で一番立派な建物と思われる和田家です。内部はほとんどが博物館ですが、人も暮らしていて2階の一部に「生活スペースなので立ち入り禁止」という表示があります。何だよそれ、おもしろいな。
写真撮りたかったのですが、内部は撮影禁止でした。残念。
白川郷はとにかく景色が良いです。田んぼが青々としていて、ぽつんと建っている家との対比が綺麗でした。
展望台からの眺めも格別でした。ただ少し山登りが必要なのでもっと涼しい時期に来ると幸せかも知れません。ここは冬もさぞかし綺麗なのだろうな…。
白川郷を後にして、宿へ。写真無いけど道の駅にも寄りました。宿の写真は明日の日記に載せます。メシがうまかった。写真の左奥に見えるのは飛騨牛を使ったすき焼きです。うーん、いいねー。
しかしなぜだか、私の鍋だけ焦げ臭くもうもうと白煙が上がっている?あまりに盛大に煙が出てるので、蓋をあけてみるとなんと割り下が入っていない。私のすき焼きだけ入れ忘れられたらしい…。哀れ野菜が焦げ焦げに。
頑張って焦げてない部分を食べるも、全然味がしない。味がしないながらも飛騨牛はおいしかったなあ。さすが飛騨牛!なんてその時は思っていたけれど。冷静に考えれば、割り下がないと気付いた時点で鍋を替えてもらうべきだった。今更言っても仕方ないですけど。
高山にはタイムリーというコンビニがたくさんありました。大手コンビニに無視されている辺り、田舎らしさが出ておりますよ。
三連休以上の連休前日、給料日、賞与日つまりボーナス、この三つは定時退社日です。これって業界の標準?
連休前に仕事しないで休んどけ?って気持ちは伝わりますが、他はよくわかりません。
あとうちの会社は水曜日と金曜日も「定時退社推奨日」とされています。これもイマイチよくわからんルールである。何か理由があるのかな。
晩ご飯をコンビニで買って、家に帰ってきてビニール袋をぽいって捨てると、ビニール袋の寿命がわずか5分です。私に買われたばかりに、即ゴミ箱行きになる袋達になんだか申し訳なくなってきて、最近はエコバッグを使っています。
コンビニのオマケ(カモノハシのイコちゃんが書いてある青いバッグ)なので、ペナペナで貧弱バッグです。初見ではすぐ壊れそうと欠点に感じていたものの、薄っぺらいから畳んで小さくできるし、通勤カバンに放り込んでも気にならない重さなので、普段から持ち歩けるんです。
持ち歩いても気にならない重さ、これは大きい利点です。もし丈夫でごつくて重いエコバッグをもらっていたら、恐らく持って出歩かなかったでしょう。だって邪魔くさいもん…。
同期の皆さんと飲み会しました。金曜じゃなくて土曜なのがポイント。店も街も駅も全く混んでいないのです。素晴らしいでーす。
お店は豆助(高槻市)です。全ての基本が豆腐、豆腐三昧です。
でも結婚して家庭を持つ人が増えてきたら、こんな集まりも出来なくなるだろうなあ。土曜に集まるなんて許されないだろうし。
< | 2008 | > | ||||
<< | < | 07 | > | >> | ||
日 | 月 | 火 | 水 | 木 | 金 | 土 |
- | - | 1 | 2 | 3 | 4 | 5 |
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 | - | - |
合計:
本日: