2010-07-23 雨 [長年日記]
_1 kprobe
sysfsのファイルを触るユーザランドプログラムがうまく動かないので,デバッグのためkprobeを仕込んでどこでエラーが返ってきているのか調査.ざっくりとした流れは
- ソースからそのファイルへアクセスされたときに呼ばれる関数を調べる
- その関数の先頭にkprobeを埋め込んで,dump_stack()で関数の呼び出し順序を調べる
- 出てきた関数の先頭に同じくkprobeを,後ろにkretprobeを仕込んで,どういうふうに呼ばれているか,復帰値は何かを調べる
このときよく呼ばれるような関数だとログがえらいことになるので適当にフィルタリングすることが重要.途中kretprobeの埋め込みアドレスを失敗してハングしたりしたけど,まあよくあることだろう.
でkprobeを使った調査の方はstatic関数呼び出し時のkretprobeの埋め込みがうまくいかずに結局失敗したんだけど.orz...
でもその後閃いた対処をしてみるとプログラムが無事に動いたので,このあたりがあやしいという結果報告をして完了.
ひさしぶりにかなりじっくりソース読んだり,プログラム書いたりしたわ.もっと機会増やさないとな.どんどん勘が鈍っていく.
_2 次郎 発熱
またですか……旅行の疲れが出てきたのかな.
夕飯後にAcitaminophenを飲ませ様子を見る.大人が寝る頃には熱も引いたのでよかった.その後ぶり返すこともなく収束.よかったよかった.