ダメグラマな一日 (1)

カルドセプト サーガのサイコロのバグの話題で盛り上がってからちょうど1年だなぁ、と思い、線形合同法の疑似乱数としてのクソさとメルセンヌ・ツイスターでの実装をやってみようと思った。

まずは検証用プログラムから。main.cをおもむろに書いて、ああそうだMakefileくらい用意しておこうと思いMakefileも用意した。make すると一発でコンパイルが通って不安を覚えつつ、いざ実行してみると、なんと予想に反してきれいに一様分布していた。

なんじゃこりゃ、と思い「man rand」してみると「random」使ってるって書いてある。で「man random」してみるとこんなのが書かれてるし。

The random() function uses a non-linear additive feedback random number generator employing a default table of size 31 long integers to return...(略)

おもしろくないなぁ。でも、これじゃ結局どんな疑似乱数生成方式をとっているのかよくわからん。ってことでソースを見てみよう、と思って見るも /usr/lib /usr/include /usr/src あたりを見ても、ヘッダはあるもののソースがない。

apt-cache search glibc してみて「glibc-debug」を発見。apt-get install glibc-debug で61.2MBを消費しつつインストールし、おもむろに /usr/src を見るも、やっぱりソースがない。apt-cache show glibc-debugするとこんなのが書いてあるし。。

デバッグの際に glibc のソースファイルを見るには,glibc-2.3.4-2vl3.src.rpm を展開する必要があります.

('A` "glibc-2.3.4-2vl3.src.rpm" でググり VineLinux のミラーサイトから "glibc-2.3.4-2vl3.src.rpm" をDLしてインスコ。でもソースがどこに入ったのかよくわらん。

ならば、ということで、gdb で追うことにした。emacs -nw で M-x で "gdb" して・・・と思うと gdb がないとかいいやがる。which gdb で本当に入っていないことを確かめつつ、apt-get install gdb し、その後改めて emacs -nw で M-x で "gdb" でこんな感じで実行
Current directory is ~/hoge/
GNU gdb 6.4.90
Copyright (C) 2006 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details.
This GDB was configured as "i386-vine-linux".
(gdb) file main
Reading symbols from /home/rarul/hoge/main...done.
Using host libthread_db library "/lib/libthread_db.so.1".
(gdb) b my_rand
Breakpoint 1 at 0x80483aa: file main.c, line 11.
(gdb) run
Starting program: /home/rarul/hoge/main
Breakpoint 1, my_rand () at main.c:11
(gdb) add-shared-symbol-files /lib/libc-2.3.4.so
This command is not available in this configuration of GDB.

"This command is not available in this configuration of GDB."ってナンダ? apt-cache show glibc-debug には " このライブラリを使うには,デバッガ起動前に環境変数を LD_LIBRARY_PATH=/usr/lib/debug と設定する必要があります." とか書いてあったので、"LD_LIBRARY_PATH=/usr/lib/debug gdb" で起動して見るもやっぱり add-shared-symbol-files は使えないっぽい。やっぱり VineLinux は、そういうのをやるのには向かないのか?

[rarul@yuika hoge]$ cat /proc/version
Linux version 2.6.16-0vl76.3 (iwamoto@natsume.home.local) (gcc version 3.3.6 release (Vine Linux 3.3.6-0vl7)) #1 SMP Sun Jun 17 14:32:18 JST 2007

もちろん、si とか disas 使えば追ってけなくはないけど、それをやっても結局 C のコンパイルもとソースを見てみないと何やってるのかよくわからんしなぁ。今仕事でやってるターゲットでの開発は、なんだかんだで他人が用意してくれた至れり尽くせりな環境の上での開発でしかないと実感。やっぱ x86 (or x86_64) 上の Linux も含めてちゃんと勉強しないといけないなぁと反省。

とかやってると腹が減ってきたので、今からお湯入れて *分待つタイプのやつを食ってくることにする。

(追記) VirtualPC上にFedora 6入れた環境があったことをすっかり忘れていた。こっちでやればよかったと思いつつも、今更やる気力はなし。

このブログ記事について

このページは、らるるが2007年10月28日 04:07に書いたブログ記事です。

ひとつ前のブログ記事は「「ウェブ社会の思想」を読んだ」です。

次のブログ記事は「2007遠征日記 (1)」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

月別 アーカイブ

ウェブページ

Powered by Movable Type 7.9.0