• ベストアンサー

現場のデバック方法

tama_2001の回答

  • tama_2001
  • ベストアンサー率18% (21/111)
回答No.4

こんにちは。 他の方の回答を読んでいたら、#3さんが近いかも。 「デバッグ=コンパイルが通った直後のブツを試験」ならば 私の場合、gdb(またはdbx)ですね。 JAVA なら jdb(笑) 条件付コンパイルではデバッグは行いません。 いままでにデバッグ用のプログラムを作ったのは、 関数に呼ばれる関数が呼ぶ関数の・・・と 呼ばれる先の、システムコールを呼ぶ関数に対してだけでした。 それ以外の関数のデバッグ時は、期待した値を返すダミー関数を用意して。 (インタフェースは本物と同一です) お互いのデバッグが終わってリンクした後にも ちゃんと試験は行いますけど、それも dbx や gdb や jdb デシタ。 gdb から入った私には jdb は苦でもなんでもないのですが、 「ソースコードとにらめっこしながら行う」作業は 苦痛な人が多いのかもしれません。 ちなみに、printfは「どっかがおかしいけどドコだよ!!!」という バグ追い時に「とりあえず入れてみよー♪ハハハ。」と 入れることはありますが、納品時は削除しています。 ログ出力用の関数は用意されているし、 ブツを起動する人は画面とにらめっこしてません。 (24時間365日、人間を貼り付けてはおけません) 逆にお客様の目に簡単に入ってしまうエラーは マズイのです・・・(^^;

参考URL:
http://www2s.biglobe.ne.jp/~dat/java/strikes/jdb.html
20centuryboy
質問者

お礼

JAVAだとjdbなんですね(笑)あとやはりデバック用の関数を現場では使うものなんですね。とても参考になりました。どうもありがとうございました。

関連するQ&A

  • emacsでデバックできない

    linux & プログラミング初心者です。 GNU emacs 22.1.1を使いc++でのプログラミングを勉強しています。 間違ったプログラムを書いてM-x compile でコンパイルしたときに make: *** ターゲットが指定されておらず、makefileも見つかりません。中止。 とでてデバックできません。何が原因なのでしょうか?? OSはubuntu 7.10です。

  • arm-linux-gdbをMeadowで使う方法ありますか?

    Cを書くのに、GDB + Meadowを使い始めました。 今回、arm-linux-gccで、組込み用のプログラムをクロスコンパイルしています。そこで、M-x gdbのような感じで、arm-linux-gdbをMeadow上で使うことはできますでしょうか?(例えば、M-x arm-linux-gdb みたいな)やり方、もしくは、参考になるサイトがあればお教えください。 ちなみに、現段階では、gdbserverをターゲットに置いて、arm-linux-gdbをCygwin上から直接起動してデバッグすることには成功しております。Cygwin暦はそれなりにあるのですが、emacs関連の知識は最近始めたばかりで、ほぼ初心者レベルです。よろしくお願いいたします。

  • Emacsでのgccのインクルードパスの設定方法

    こんにちは。 Emacsは、Gnu Emacs for Windows 23.4 を使っています。 gccのインクルードパスの問題により、Emcasのcompileコマンドで、Cのソースファイルをコンパイルするができなくて困っています。 具体的には、CのソースファイルをEmacsで開き、「M-x compile」と入力した後、ミニバッファで「gcc -c test.c」と入力すると、以下のようなコンパイルエラーが表示されます。 ------------------------------------------------------------ gcc -c test.c test.c:1:19: no include path in which to search for stdio.h Compilation exited abnormally with code 1 at Sun Jul 08 18:24:05 ------------------------------------------------------------ どうやら、インクルードパスが設定されていないようです。 ちなみに、test.cは以下のような非常に単純なCプログラムです。 ------------------------------------------------------------ include <stdio.h> int main(void) { printf("Hello!\n"); return 0; } ------------------------------------------------------------ コマンドプロンプトや、ktermといった端末から、同じように gcc -c test.c というコマンドを実行すると、エラーが出る事はなく上手くコンパイルできますので、 適切なインクルードパスが設定されているはずです。 どうすれば、Emacsのcompileコマンドから、gccでコンパイルを行う時に使われる、インクルードパスを設定する事ができるのでしょうか? (gccの-Iオプションで、毎回インクルードパスを設定する必要をなくす方法が知りたいです。) では、よろしくお願い致します。

  • Insightでデバックする際にSIGBUSでエラーになりデバックが進みません

    初めて質問します。 マイコン初心者です。 現在、GCC Developer Liteを使用してSH7144の勉強をしているのですが、付属のデバッカのInsight(GDB6.1)でデバックしようとすると、"Program received signal SIGBUS, Bus error"というエラーが出てデバックが進まなく困っています。コンパイルしたソースを実機で動かすと動いている為、コンパイルの方法が悪いのか、Insightが悪いのかわからない状態です。 下記にソースファイルを示します。 #include <7144.h> void initIO(void) { PFC.PEIORL.WORD = 0x0003; } void wait(void) { long int t=1000000; while(t--); } void main(void) { initIO(); while(1) {  PE.DRL.BIT.B0 = 1;  wait();  PE.DRL.BIT.B0 = 0;  wait();  PE.DRL.BIT.B1 = 1;  wait();  PE.DRL.BIT.B1 = 0;  wait(); } } プログラムはマイコンに接続したLEDを点滅させるプログラムです。 GCC Developer Liteでのコンパイルオプションはデフォルト、マイコンは"SH7144F 内蔵フラッシュROM"を選択しています。 御教授の程よろしくお願いいたします。

  • gcc バージョン違いによるコンパイルエラー

    C言語でWeb系のプログラムを作成している者です。 以前まで、OSはFreeBSD 4.11-RELEASE-p12・gccのバージョンは2.95.4でコンパイルできていたプログラムが、OSはFreeBSD 5.4-RELEASE-p8・gccのバージョンは・gccのバージョンは 3.4.2で、今まで出なかったようなエラーが沢山出現し、コンパイルできなくなってしまいました。 OSをインストールし直すのは、既に稼働中のサイトですので厳しく、GCCのバージョンを下げるかソースを書き換えるかして対処する方向で行きたいと考えております。 しかし、gccの2.95.4の圧縮ファイルはもう、gccの公式サイトに落ちておらず、バージョンダウンは難しそうです。 gccのバージョンによるコンパイルエラーを乗り越えた方、ご指摘など有りましたらお教えくださると幸いです。

  • Foderaでプログラムを実行する方法

    C言語の勉強のためにFodera Core 6を入れて Windowsとデュアルブート環境にしたのですが gccでコンパイルしたファイルを実行できません。 どうしたら実行できるのか教えてください。 プログラミングにはあんまり詳しくなくて 初歩的な質問ですみません。

  • gccコンパイラー

    今、gccでコンパイルするc言語のコンパイラーを探しています。 フリーでダウンロードできるいいコンパイラーはないでしょうか。 お勧めなどがありましたら教えてほしいです。 あと、C言語ではgccやbcc等のコンパイラーで プログラムソースの書き方容が変わったりするものなのでしょうか? 一応、ボーランド?のコンパイラーは持ってます。 ただ、今度OJTでUNIX環境のc言語開発の現場に行く事になり gccでコンパイルするもので勉強しとくようにいわれています。 宜しくお願いします。

  • bash.exeを直接起動するとgccが実行できま

    C言語を始めてみようと思ってcygwinをインストールしました。初心者です。 Cygwin.batから起動するとキチンとgccコマンドが使えるのに、bash.exeから直接起動すると、なぜかcommand not foundとなってしまいます。emacsからコンパイルできるようにしたいと思っているので、不都合で困っています。どうすればよいのでしょうか。

  • Ubuntuで手軽にSubversionを使いたい

    Ubuntu 11.04で簡単に設定できてGUIでソースのバージョン管理できるツールを教えていただきたいです。 会社の研修で、LinuxでのC言語プログラミングをやっています。 GUIの端末上でviでソースを書いてgccでコンパイル、という原始的なスタイルですが、ソース管理のためにSubversionを入れようとしています。 しかし、検索して見つけたnautilussvnとかtortoisehg-nautilusとかをいくつか試したんですが、うまく動いてくれない上に、OSの動作まで不安定になってしましました。 途中で自分がなにかおかしなことをやったんだろうなとは思いますが、原因を考えることに時間を使いたくないので、環境作成をOSインストール(VMware2.5.5+Ubuntu)からやり直そうと思っています。 昔、Windowsでプログラムを書いていたときにTortoiseSVNというのを使っていたので、できればGUIがいいんですが、プログラム開発自体がかなり原始的なので、CUIでも良いツールがあれば教えていただきたいです。 よろしくお願いします。

  • h8300-linux-elf-gccで指定可能な配列の大きさ

    AKI-H8/3069Fを使ってプログラムのC言語による組込ソフトの勉強をしています。そこで、教えていただきたいのですが、配列の大きさの上限値はいくつなのでしょうか? 例えば、unsigned int char a[1025];としてもコンパイル時にエラーが出なければ大丈夫なのでしょうか? 参考にしているのは、書籍『はじめる組込みLinux』です。そして、そのサポートサイトからダウンロードしたGCCコンパイラ(h8300-linux-elf-gcc)を使用しています。