タグ

2010年3月3日のブックマーク (6件)

  • GDBを使ってプログラムを動かしてみる

    まずはGDBを使ってみよう。習うより慣れろだ。 下準備(プログラムのコンパイル) GDBを使ってみる、といっても何から始めればよいのだろうか。 まず最初に行うのは、デバッグしようとしているプログラムをGDBで実行できるようにコンパイルすることだ。 GDBを使ってプログラムをデバッグするには、ソースコードと実行可能ファイルを対応づける デバッグ情報を実行可能ファイルに付加させる必要がある。 GCCでは、そのデバッグ情報を付加させるオプション-gが用意されている。 例えば、program.cというファイルをGDBでデバッグできるようにコンパイルするには次のようにする。 $ gcc -g program.c 注意: GCCには他の主要なコンパイラと同様に最適化オプション(-O)というものが用意されている。 GCCでコンパイルされることを前提として書かれたプログラムは、一般的にこの最適化オプション

  • 開発メモ unrecognized selector sent to instance

    unrecognized selector sent to instance Terminating app due to uncaught exception XCode において上記エラーのように、セレクタがなくて例外が発生した場合、デバッガが run loopで停止して原因箇所が分かりにくい。 解決方法1 gdbのコマンドラインから b __raiseError または、Xcodeの、実行/ブレークポイントを管理/シンボリックブレークポイントを追加で __raiseError を追加 例外が発生する前にブレークする 解決方法2 例外が発生してしまった後、どこで起きたかを探る デバッガの出力 2008-12-24 11:26:04.089 hogehoge[30592:20b] Stack: ( 2487701771, 2475978299, 2487730954, 248772430

  • @IT:BIND 9の改ざんチェックとインストール(1/3)

    アドミン(注)は、自ネットワーク内のサーバに変更があるとSRI-NIC(Stanford Research Institute's Network Information Center)にその都度届け出ます。SRI-NICは届けのあったものをまとめ、アドミンが利用できるようにHOSTS.TXTファイルとして公開していました。この手法が間もなく破たんすることは、誰もが予想するとおりです。 そこで考えられたのがDomain Name SystemDNS)であり、それを実現するBerkeley Internet Name Domain(BIND)です。いまでこそ当然のように使われているDNSですが、つい数年前まではDNSをサポートするシステムの方がまれで、当時はDNSをサポートするためにlibbind.aなどのリゾルバをインストールすることも珍しくありませんでした。 こうしたことは過去の出来事

    @IT:BIND 9の改ざんチェックとインストール(1/3)
  • 使いながら覚えるGDB

    はじめに プログラムのデバッグと言えばひたすらprintfを挿入しまくっていたある日、 デバッガなる便利な代物があるということを知った。なんでもプログラムを一行 ずつ実行できて、変数の値をその場で確認できるらしい。これは是非使ってみねばと 思い、UNIX環境で使えるGDBというデバッガを試してみた。が、何がなんだかさっぱり 分からない。Webを検索するとマニュアルの日語訳が見つかった。これで勉強すれば 使えるようになるかも、と読み始めるも、いきなりm4がどうのこうのだの、意味不明 の文章が続く…。 これは私がGDBを使い始めた時の話だが、似たような経験を持っている人が他にもいる と思う。 GDBのマニュアルは初心者にはすこし敷居が高い。 GDBに限らずマニュアルというものは初学者が参考書として用いるのには 適していない。というのも、マニュアルの類は情報量が多い分、重要な部分を 見つけ出す

  • gcc のデバッグ術

    Unix系コマンドラインユーザーのための、 gcc/g++/g77 による開発におけるデバッグ術を簡単に紹介します。 以下の内容は gcc 2.7.2.3 での動作は確認しています。 g++/g77 でも恐らくは通用すると思うのですが、 ひょっとすると異なる部分があるかもしれません。 筆者は g++/g77 の使用経験がないので、その場合は御容赦を願います。 実行前 キーワード「コンパイルオプション, -Wall, -O2, -O4」 まずは gcc にオプション opt'-Wall' を付けてコンパイルし、 警告がなくなるまでソースを修正します。 これは 常識 です。 次に opt'-O4 -Wall' でコンパイルします。 「未初期化変数の使用」の警告 (`foo' might be used uninitialized in this function) は、 opt'-O4' を付

  • "Twitterで歌詞をつぶやいたら、JASRACの利用料が発生する"の話

    先日、ニワンゴ取締役の 木野瀬さん(@kinoppix) の下記ツイートをリツイートしたら50件ぐらいリツイートされました。多分木野瀬さんのところからは数百件ぐらいリツイートされているのではないでしょうか(^^;; 発端はニコニコ生放送「二次創作オンラインワークショップ」にJAS...

    "Twitterで歌詞をつぶやいたら、JASRACの利用料が発生する"の話