Linux kernelソースをwebで確認

各バージョンのkernelソースを確認するには
以下のサイトを使用する。

Linux 2.6.11 and later 
をクリックして次のページのコンボボックスからソースを確認したいバージョンを選択する。

http://lxr.linux.no/
c#,javaとかにあるforeachと同等な動作をさせるc言語のマクロ





g++(gcc)のコンパイル時にdebug機能の有効、無効を切り替える。
コンパイル時に-Dオプションを指定する。

gcc -Dxxx
でコンパイルすると内部出来には
#define xxx
が定義されているとみなされる。




windows版のログマクロ
ログ用ヘッダLogutility.hとして定義してログを
出力したいファイルでincludesる



c言語のログマクロ
フラグによって標準出力かfileに記録するか選択できる。



[oracleのSIDを変更するときは以下のファイルを編集]

/etc/oratab
/home/usr/.bash_profile
/homeusr/.bashrc



oracleはUniversal installでインストールに失敗するとwindows版,linux版どちらで再度インストールを
行うとインストール途中でエラーになる。

oracle 11g(linux版)で手動で消去するファイル一覧



cppでpcファイルを作成する場合はホスト変数はmainの前て定義しなければ
コンパイルエラーになるので使用する変数はすべてmainの前で宣言しておく。
下記ソースでは
EXEC SQL CONNECT : oracle_current IN SYSDBA MODE;
の部分がエラーになります。




c言語でつくる場合は、ホスト変数を関数内で定義してもmainの前に記述しても
mainの前に定義してもOK。



oracle pro*c用(cpp)のMakefile




Oracle 11g pro*c用のMakefile


気づかないうちに雲野コアウィジェットが復活していた。
よかった、復活してやはり時計は必要だね。

androidのログクラス
android2.2,android4.0のHTC Desire(初代),HTC Jでテストしどちらも期待通りの動作。
使い方はAndroidManeifest.xmlに下記を追加(SDカードに保存しているため)





メインactivityのOnCreateで初期化

MYUtilityEx.init( this );
MYUtilityEx.SetDebugAble( true );

任意の関数で以下を実行すると/mnt/sdcard/test.logに日付、時間、java行数、メッセージを表示
MYUtilityEx.MY_LOG_FILE( "ATEST", "test.log", "write_test starttime" );






ソースのクロスリファイレンスを作成するツールとしてglobal tag systemをLXRがある。
apacheサーバを立てているとこれらを利用してソース解析が用意にできる。
LXR、global tag systemもどちらもapacheの公開ディレクトリの設定を変更して運用
する必要があるので設定方法の記述は省略。


global tag system
http://www.gnu.org/software/global/

LXR
http://sourceforge.net/projects/lxr/

LXRで作成されたlinux kernelソースのクロスリファレンス
http://lxr.oss.org.cn/



global tag systemの使い方

ソースブラウザにしたいターゲットソースがあるディレクトリで以下を実行
1.gtags -v
2.htags -safFn


cやjavaの混在環境(android)の場合は先にfindコマンドでファイルリストを作成しておく
1.find . type f -print >filelist
2.gtags -f >filelist
3.htags -safFn


・cflow(関数コールツリー)との連携

cflow
http://www.gnu.org/software/cflow/


1.gtags -v
2.cflow --tree --format=posix `global -P` > cflow.out
3.cflow --tree --format=posix --reverse `global -PP >cflow-r.out
4.htags -safFn --cflow=cflow.out --callee-tree=cflow-r.out
bashの同じスクリプトを多重で実行できないようにするためにはflockを使用する。

ロック開放をまたない
flock -n 9

ロック開放を待つ場合
flock 9

ロック解除
flock -u


liuxのauditの設定方法

signal 15(term),signal(kill)を送信したプログラムとその相手をログに記録するための設定

audit.rulesに以下を追記
# vi /etc/audit/audit.rules

-a exit,always -F arch=b64,-F al=15 -S kill -k KILL_TERM
-a exit,always -F arch=b32,-F al=15 -S kill -k KILL_TERM
-a exit,always -F arch=b64,-F al=9 -S kill -k KILL_KILL
-a exit,always -F arch=b32,-F al=9 -S kill -k KILL_KILL


設定を変更したあと
#service audit restart


audit動作確認はauserachでキワード(kオプション)を利用。
#kill xxx (消してもいい自作プログラム)
#auserach -k KILL_TERM
bashのソースがそれほど多くなければ,-xオプションをしていして変数やログを確認する。
ソースが長い場合や、いろいろなbashを内部でincludeしている場合はbashdbを利用する。
またbashdbは使用している bashにあったものを利用する。
また、使用shellに合わせてbashdb,zshdb,kshdbがある。

shellデバッガ
http://sourceforge.net/projects/bashdb/files/


bashのソースが短い場合の処理の流れを確認んする場合
# sh -x bash_scriptnameで




http://sourceforge.net/projects/bashdb/files/bashdb/


bashdbの基本コマンド

変数の表示
bashdb>print $変数名

配列データを全て表示
bashdb>print ${変数名[@]}

変数を全て表示
bashdb>info variable

関数を全て表示
bashdb>info functions

行数表示
bashdb>info line

デバッグしているファイル
bashdb>info files

ソース表示
bashdb>list

SIGTERMを送信
bashdb>signal 15

カーソルがある処理を飛ばす
bashdb>skip

前方検索
bashdb>search xxx


後方検索
bashdb>reverse xxx

変数のwatch
bashdb>watch xxx

backtraceを表示
bashdb>backtrace

bashをeditする
bashdb>edit



















linuxでsar -Aコマンドのなかからcontext switchの行だけ取り出す
複数の項目がなければ、targetの値を変更することで応用かの受



About