[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
[OSASK 1062] Tips of debug(Re: thaleia0).
- Subject: [OSASK 1062] Tips of debug(Re: thaleia0).
- From: Hidemi KAWAI <kawai !Atmark! imasy.or.jp>
- Date: Fri, 11 Aug 2000 05:52:44 -0000
こんにちは、川合です。
橋 さんは 2000/08/11 02:59:38 の「[OSASK 1060] Re: thaleia0.」で
書きました:
(thaleia0のベータリリース)
>一式簡単に試しましたが、とりあえず動いているみたいです。
報告ありがとう。
>なんとなくイメージはつかめたけど、これからソース見るとまた会社で寝て
>怒られるので、とりあえずほどほどにしときます(*_*)
はい、ほどほどにしてください。私生活を破壊してはいけません(笑
)。
>ちなみに私のラーメンタイムはまだ来てません。
>#カウント終了後のメッセージを変えようとしているんだけどうまくいかないのだ!
>前のメールのエラーは私の方のミスのようです。相変わらず同じエラーでしたので。
橋さんのページの「新聞」を読んで、その後にこのメールを読んで、
苦労している様子が伝わってきました。その苦労に少しでも報いるため
に、デバッグのヒントを書きます。
現状のASKAで非常にありがちなのが、WORK構造体宣言と初期値リスト
の食い違いです。どういうことかというと、メッセージなどを書き加え
た際に、WORK構造体宣言部分の対応する部分を変更し忘れてしまうこと
です(特に文字列の長さが変わったときにやってしまう)。
次にありがちなのは、テキストボックスよりも長い文字列を表示して
しまうことです。本来ならこういう場合にはクリッピングなどの処理を
すべきなのでしょうが、現バージョンではそのような気の利いたことは
なされておりません。あっさり誤動作します。
また、デバッグ環境は言うまでもなく貧弱なままで、まともなアプリ
ケーションを作るためには、20回以上の再起動が必要になること請け合
いです。これは現時点では不可避なので、こらえてください。ASKA/OSA
SKができればいいんですが・・・。
で、デバッグ環境が不完全な場合、もっとも役に立つデバッグ手段と
して「printf」デバッグというのがあります。これは、挙動を確認した
い変数の内容を表示したりするものです。・・・しかし、現状では数値
の画面表示そのものが十分に困難(進数変換などが必要)で、デバッグ
のためにデバッグするという事態になりかねません。
そこでおすすめなのが、Break Point例外の利用です。表示したい変
数の値をレジスタに代入しておいて、
INT(0x03); もしくは、 DB(0xcc);
という一文をかまします。この命令によりアプリは停止してしまいます
が、一度に複数のレジスタが表示できるので僕は重宝しています。
それと、ライブラリコールの際に複数コマンドの記述が可能ですが、
エラーで止まってしまった場合、どのコマンドのせいでエラーになった
のかわかりにくいという難点があります。ですから、怪しいところでは
デバッグが済むまでコマンドを1つずつ実行させた方がエラー個所を特
定しやすいと思います。
>ということで、エラーメッセージのメモ取らなかったんだけど、ちいと気になる
>エラーがありました。上の馬鹿アプリ試して相変わらずエラーで止まったんだけど・・・
>Ctrl+Alt+Delが効いてないようです。別のときには効いていたので、
>アプリ側の影響かもしれないけど、気になったので。
>#起動直後に生じたもので、Num他も起動直後一瞬点灯し、消灯。効いていない状態。
>エラーコードはCS EIP:0020だったのも謎・・・(ちとうろ覚え)
>エラーコードメモって再度報告します。
エラー個所が0020:????????ということは、GAPIでエラーが発生した
ようですが、これは明らかに表示関係でつまずいています。ライブラリ
側でパラメーターチェックをほとんどしないでGAPIに処理を回している
せいです。で、エラー個所がアプリ内(CS = 0x7)でも標準ライブラリ
内(CS = 0xc7)でもない場合は、キーボードリセットが効かなくなる
場合が結構あります。
---
あらゆる努力にも関わらず、バグが取れなかったら、OSASK-MLで相談
するという手もあります。その際、ソースはweb等からダウンロードで
きるようにしておいてください(メールに添付しないでほしいです)。
何を制作中かばれてしまいますから、みんなをびっくりさせることはで
きなくなりますが、デバッグの実例から学べることは少なくないでしょ
う。
それでは。
--
川合 秀実(KAWAI Hidemi)
川合堂社長 / OSASK計画総指揮 / カーネル開発班
E-mail:kawai !Atmark! imasy.or.jp
Homepage http://www.imasy.or.jp/~kawai/