結局3回目のTBもfromdusktildawnさんだったわけで、

TBというカテゴリからfromdusktildawnに変えてみようかと悩み出した。

今回のネタは、思考の枠を規定する「はてなブックマーク」 - 分裂勘違い君劇場 by ふろむだ
とまぁ、日曜日でそれもとてつもなく暇で仕方が無いか、もしくは思いついちゃった以上やめれなくなっちゃったか分からないネタ。

世の中には戦略と言う自分の決めたルールがあるんだけど、世の中はそんなルールが幾重にも重なっちゃってひしめき合っている。だから、相手のルールに触れてしまうし、気づかされる。そして、相手のルールと自分のルールがどちらが優れているか葛藤に入る。そのときはやっぱり自分のルールの上でしか判断できないから、相手の利点も欠点も全体は分からない。*1その結果、多くの場合、決定的な優位性を見つけられないだろう。しかし、そのような決定的な優位性を感じないことに対して恐怖を感じるのもまた人の性。いいプログラムだねぇ。


マクロ的には一部のリソースを新しいルールに適応することで、種として多様性を持つことで強くなるんだろうけど、ミクロ的には新ルールに転向するかどうかは死活問題。結局悩むしかないわけで、でもやっぱりわからないんだろうな。

だからこそリーダーが求められるんだろうなぁ・・・とひとしきり考えて。
そのリーダーはさいころを振っていることを知られたくないだろうなぁとほくそえむ。

*1:まぁ、4Windowで行くと自分の戦略の利点と欠点も同様に全ては分からないが、多くの人はそのことに気がつかないため、ここでは捨象する。

5

Eclipse Community Forums: Welcome to the forum
CDT3.0.2がついに登場。


INDEXERは速くなっているだろうか・・・・



・・・・微妙。

速くなっているけど製品レベルじゃないんだよねぇ。
どうして、JAVAと比べてこれほど遅いのかなぞだよな。

うーん、でも、考えてみればjavaは明示的にimportしたものだけ検索範囲になっている。
それに比べると、Cは内部で多重includeしているし、
それが検索時は並列に扱われるわけだから、かなり大きなテーブルを取り扱わないといけない。
リンクが遅いことも考えても、C言語自体が抱える問題だよなぁ。
globalと比べてどうか?って考えるんだけど。どっちもどっちのような。



個人的にはstaticと構造体でガシガシにして、外にsymbolや宣言を隠すのが好きだけれども、
そのような書き方をする人は殆ど見たこと無いからなぁ。C++ならともかく。
でも、みんなでそうすればかなりリンクとか早くなるのに。
現プロジェクトのワーニングランキング一位に輝く私が言うのもなんですが。
(あれは、コードジェネレーターが悪いんだと叫びたい・・・と思ったらそのコードジェネレータも自分が作ったの忘れてたorz)

4

>3.グローバル変数が変数ビューに追加できない(gdbの問題?信じがたいけど)
が、やっと解決。
結局のところgdbグローバル変数の情報が渡っていなかったから。


以下にその方法をまとめた。

1.Mapファイルの作成
「プロジェクト(p)」->「プロパティー」->「ツール設定」->「Gcc C リンカー」->「その他」->「その他オプション(-Xlinker)」に

  • -Map
  • xxx.map

という二つの項目を追加。
2.MapファイルをGDBに渡す
「実行(R)」->「構成およびデバッグ」-> 「C/C++ローカル」->「xxx(プロジェクト名)」->「デバッガー」->「GDB・コマンドファイル」に

  • -s xxx.map

という項目を追加。


そうすると、デバッグの変数ウィンドウにグローバル変数が追加できるようになっている。

うーん。考えてみると当たり前なんだけど・・・自動でやってくれないのか(^^;;

3

>1.コンソールにprintfなどのstdoutが表示されない(既存のバグ)
についてやっとそれらしい情報が見つかった。


Bugzilla Main Page
Bug#102043(Console Output Does Not Appear When Launching An Application)
によると、Win版ではコンソールが死んでしまうためstdoutが取れないことがあるらしい。
いや、「取れないこと」というよりは、もっと深刻で、
stdoutに出力する場合、一旦バッファー*1にためられるのだけれど、それが、プログラム終了時に破棄されて、そこにたまっているものが出力されないようです。
そのため、stdoutに何も表示されない可能性もあります。

#14でMikhail が 2006-01-28 の時点で一週間後に3.0.2を出して、一時解決をする
(gdbのコンソールを別のDos窓に残す方法?)
らしいのですが、そもそもはEclipseの内部バグらしくて、Eclipseの3.2で直るとか直らないとか。
そのときにリンク先として指定されたBug#121454にはパッチは乗っているなぁ。
2006-02-08 の時点では問題ないとの台詞も見当たる。

うーむ、正式リリースが待ちどおしいな。

*1:正確にはパイプ内のバッファーなのだろうが

2

昨晩の問題が昼休みに少し明らかに。
>3.グローバル変数が変数ビューに追加できない(gdbの問題?信じがたいけど)

gdbは問題ありませんでした。
私の勉強不足で手間取りましたが、ちゃんと値がとれました。

CDT 3.0.1はグローバルそのものを取得できません。
gdbとのつなぎで問題があるとすると、CDT Launchのミスの可能性がありますね。
dw@IBMのサイトで、CDTの内部部品について日本語で説明があるので勉強になりました。

IBM Developer 日本語版 : 大変申し訳ありません。このページは無効です。


Bugzilla Main Pageで、
クリティカルを調べているけど同件がないんだよなぁ・・・
たまたま今の環境がまずいんだろうか?もう少し試してみるべし。


シンボル用のINDEX作成が遅いのは次の3.0.2で直るそうです。楽しみ楽しみ。

1

フロントエンドならVCとかBorland C++ BuilderX とかあるけど、
仕事の都合上 Eclipse/CDTが濃厚になったので winXp上に環境構築しました。

環境は J2RE1.5.0_05+Eclipse3.1.1+CDT3.0.1cygwin上で gcc (GCC) 3.4.4+gdb 6.3.50
ただし、cygwin1.dll上からgetlineが見つからないという問題がある。

使った感想は

  1. コンソールにprintfなどのstdoutが表示されない(既存のバグ)
  2. mno-cygwinオプションを付けるとstat()などが失敗する(mingwようのlibがlinkされていないのか?)
  3. グローバル変数が変数ビューに追加できない(gdbの問題?信じがたいけど)

うーむ、趣味ならまだしも、仕事で大丈夫だろうか・・・(==;

なお、環境構築のHow2サイトは多いのでBlogとして、駄文と瞬間的に生きた情報を残そうかと考えています。