会社でglibcのarena(malloc)の実装を調査してみた。
malloc実行前にmallopt関数や環境変数を設定して実行することでmallocの内部処理が一部変更になる。
そもそも、glibcのソースをよんでみて思ったことは通常の開発であれば初期化しない変数のすぐ下
でif文でcheckしている部分はコードレビュー時でアウトになります。

・MALLOC_CHECKを有効にして実行
1:エラーメッセージを表示
2:エラーがあったらabortさせる。
# MALLOC_CHECK_=1 /a.out


・mallocのオプションやイメージで参考になったサイト
http://sssslide.com/www.slideshare.net/kosaki55tea/glibc-malloc
http://siddhesh.in/journal/2010/11/26/back-to-the-os-class-memory-allocation/
http://www.novell.com/support/kb/doc.php?id=3113982
http://paparisa.unpatti.ac.id/linux_journal_archive_1994_2007/LJ/087/4681.html

・glibcの本家サイト
http://www.gnu.org/software/libc/
androidでわからないことを調査していたらQiitaという日本の情報共有サービスがあるのを
発見した。itproやスラドが好きな人はここの記述も参考にするといいかも。
登録したが、誤ってユーザ名にメールアドレスを設定してしまって、変更できなかったので
入会してすぐに退会してしまった。いたずらだと思われると困るので日をあけて登録予定。
技術系のメモがわりにブログやホームページを作成している人にとって、giocityみたいに急に
サーバ自体がなくなることもあるので、いろいろ分散させておくと便利。


http://qiita.com/
技術情報共有サービス
githubのユーザでログイン可能

MariaDB
本家サイト:https://mariadb.org/
ライセンス:GPL
MariaDB 10.0.0 Alpha 2012-11-12

mysqlの開発者がベースとなって立ち上げたプロジェクト。oracle傘下にあるプロジェクトは
oracle離れしやすい傾向にあるみたいです。まあoracleのやり方はいままでのテストケースを隠したり
changelogを隠したり、open系ソースでの開発者にとっては信じられないやり方がまかり通っているようです。
linuxに同梱されているものがmysqlからMariaDBになる日がくるかもしれないです。

http://jp.techcrunch.com/archives/20120818oracle-makes-more-moves-to-kill-open-source-mysql/(日本語)
http://techcrunch.com/2012/08/18/oracle-makes-more-moves-to-kill-open-source-mysql/ (英語)
androidであまり使われていないaaptコマンドについて

aaptとやれば使い方もわかるけどとりあえず使いそうなのは
dオプションだけかも。


1.apkファイルの内容表示
# appt list xxxx.apk

2.apkファイルのdump(label user permission表示)
# appt d badging xxx.apk

3.apkファイルのdump(permisson表示)
# appt d permissions xxx.apk

4.apkファイルのdump(resouce表示)
# appt d resrouces xxx.apk

5.apkファイルのdump(ldpi-v4,mdip-v4,hdip-v4としか表示されない
# appt d configurations xxx.apk

6.apkファイル内にあるxml情報表示(label,activity,permission等)
# appt d xmltree xxx.apk AndroidManifest.xml

7.apkファイルにあるxml情報表示(stringとid)
# appt d xmlstrings xx.apk AndroidManifest.xml



oraclie linuxではカーネル関数にsystamtapでprobeできない。モジュール関数にはprobe可能


理由は以下の二つのビルドIDが違うため
#eu-readelf -n /usr/lib/debug/lib/modules/xxxxxxxx/vmlnux
#eu-readelf /boot/vmlinux-xxxxx

解決方法
ビルドIDを無視するoptionを指定してsystemtapを十王する
# stap xxx.stp -DSTP_NO_BUILDID_CHECK -vg
カーネルソースをビルドするときRHELクローン系のLinuxでは以下
のコマンドを実行しておくと簡単にソース参照できるようになる


cscopeようのファイル作成
# make cscope

ctag用ファイル作成
# make tags

etag(emacsから)用ファイル作成
# make TAGS
cflowとglobal tag systemを使って
web上からソースを簡単に参照できるようにする


c,c++の関数コールを作成するソフトウェア:cflow
サイト:http://www.gnu.org/software/cflow/

c,c++,javaのソースをweb上で参照できるソフトウェア
サイト:http://www.gnu.org/software/global/


上記2つの連記方法

1.ソースのトップで
# gtags -v
2.関数コールtree作成
# cflow --tree --format=posix `global -P` >cflow.out
3.関数逆コールtree作成
# cflow --tree --format=posix --revers `global -P>cflow-r.out
4.cflowとglobal tag systemの連携
# htagas safFn --cflow=cflow.out --calee-tree=cflow-r.out


cflowが失敗するときはfindコマンドで*cや*cppのみにする

About