あると便利なコマンドstraceをLS-GL用にSRPMからビルドします。
/usr/local/develop/src/rpm/[BUILD|SOURCE|SPECS|RPMS|SRPMS]、/usr/local/rpm/var/tmpディレクトリで行います
例のごとくVineよりstraceのSRPMファイルを拝借してビルドしますが、そのままコンパイルしてもARM系では動作しないのでここからARM用のpatchをダウンしてrpmbuild時にpatchが当たるようにspecを少々書き換えてから作業します。
Vineよりstrace-4.5.13-1vl2.src.rpmをダウンし中身をバラします。specファイルはSPECSに、それ以外は全てSOURCEに放り込みます。またダウンしたpatchファイル"strace-fix-arm-bad-syscall.patch"も同様にSOURCEへ。
$ rpmbuild -ba strace.spec
出来上がったRPMファイルをインストールします。
実際動くか適当に試してみます:
$ strace ps
execve("/usr/local/develop/bin/ps", ["ps"], [/* 14 vars */]) = 0
uname({sys="Linux", node="LS-GL24A", ...}) = 0
brk(0) = 0x41000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
open("/etc/ld.so.cache", O_RDONLY) = 3
fstat64(3, {st_mode=S_IFREG|0644, st_size=17592186044416, ...}) = 0
mmap2(NULL, 14579, PROT_READ, MAP_PRIVATE, 3, 0) = 0x40017000
close(3) = 0
open("/usr/local/develop/lib/libproc-3.2.7.so", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0(\0\1\0\0\0($\0\000"..., 512) = 512
fstat64(3, {st_mode=S_IFREG|0555, st_size=17592186044416, ...}) = 0
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x4001b000
mmap2(NULL, 158656, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x40020000
mprotect(0x4002c000, 109504, PROT_NONE) = 0
mmap2(0x40033000, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xb) = 0x40033000
mmap2(0x40034000, 76736, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x40034000
close(3) = 0
それっぽく動作しているようです。
動作がおかしく途中で落ちてしまうアプリなどを追っていくのに便利ではないでしょうか。