アスペクト指向とロギングってどう違うのかわからないです。
と、いうようなよくある話はいいとして、mudflapの話の続きとしては、「これってアスペクト指向っぽくね」っていう話にする予定だったんだけど、なんか、いまいちやる気閾値を超えなかったので放置してたところ、そういう話題が出てたので、とりあえずロギングを。
gcc-4.1.1のdiff
アレがアレでアレしてます。(情報量0)
int main() { }
こういうプログラムをコンパイルして実行すると、
$ ./a.out /usr/local/src/gcc-4.1.1/gcc/crtstuff.c:319:frame_dummy /usr/local/src/gcc-4.1.1/gcc/crtstuff.c:515:__do_global_ctors_aux nanika.c:2:main /usr/local/src/gcc-4.1.1/gcc/crtstuff.c:262:__do_global_dtors_aux
こんな感じに。
やってることはこれだけです。
- pass_loggerというパスを追加 (passes.c tree-pass.h)
- 関数の先頭にputsを入れるコードを追加 (tree-logger.c)
ロギングができるということは、アスペクト指向ができるということです。(しつこい)