トップページ⇒tech
35コメント14KB

デバッグ

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。 NGNG
デバッグするときに、printfして変数の値を読んだりどこを
処理しているか追うのは要領が悪くてかっこ悪いですか?
0002名無しさん@お腹いっぱい。 NGNG
開発環境による。

IDEならそんなことしないし、悲惨な場合だと、
処理系に標準出力さえない場合もよくある。
0003名無しさん@お腹いっぱい。 NGNG
c@`c++なら開発環境が充実してますけどperlや他のマイナーな言語だと
そういう訳にはいかないですよね
0004名無しさん@お腹いっぱい。 NGNG
>2
どうするの?それ
っていうか、どんな環境なの?標準出力がないって
洗濯機とか?
0005名無しさん@お腹いっぱい。 NGNG
VCでもreleaseとdebugで動作がかわっちゃう時は困るねぇ
(TRACE使えないし)
0006名無しさん@お腹いっぱい。 NGNG
マルチスレッドとかリアルタイム処理とかで
デバッガで追うと動作かわっちゃう場合も困りますね
00072>4 NGNG
組み込みとか制御系とかの貧弱環境の話。
洗濯機とかもたぶん無いだろうなぁ…

どうするかというと、ビープ音とか、LEDとかでやる。
シリアルなんかがあるとかなり楽。
0008名無しさん@お腹いっぱい。 NGNG
COMつなげてやってますか?あれだとターミナルを上げておけばいろいろみれていいですね。
ビープ音だけっていうのはやったことないです。
0009 NGNG
うむ
0010スーパー名無しブラザーズ NGNG
ロジアナやオシロスコープでやったことがある。
たいしたプログラムじゃなかったけどね。
0011名無しさん@お腹いっぱい。 NGNG
俺も以前はロジアナでやっていたな。つい5,6年前の
話だが。他に何もデバッグツールが無かったCPUだったから。

7セグLEDとトグルスイッチだけの環境もあった。
なにしろCPUすらCPLDだけで作ってあったものだからな・・
0012プログラムに専念したい。 NGNG
Cのソースファイルをステップ動作させながら、CPUのデータ
出力や、特にI/O回りのデータ捕捉できますか?
ロジアナ使って。
0013プログラムに専念したい。 NGNG
何故かと言うと、試験屋や機械屋、ハード屋が結託して
プログラムが悪いとガタガタ言って来るからその都度
トラブルシュートに最後まで付き合わされるからです。

コーディングした通りのデータや制御信号がI/0から
出ている証拠を突き付けて、さっさと一抜けしたいんです。

0014名無しさん@お腹いっぱい。 NGNG
OutputDebugStringがときどき出力されなくてまったく使い物にならないのは
うちのVC++5.0が腐ってるからですか。
0015名無しさん@お腹いっぱい。 NGNG
Delphiで効率のいいデバッグを望むなどとは、厨房の意見ですか?
0016>12@`13 NGNG
ステップ動作させられるの? ならロジアナも必要無いんじゃない?
普通ハード回りのデバック時は止められない事多いけどねえ
0017名無しさん@お腹いっぱい。 NGNG
>16
単に証拠をつきつけたいということじゃない? だったら、
デジタルオシロで波形をとって、それを印刷してつきつけるだけ
じゃん。まぁ、どこを取るかがわからないのかも知れないが。。
ターゲットのハードがわかってないと駄目だし。
とにかく、ロジアナが出てくるまでもないぞ。つーか、ロジアナだと
そういう確認には使えないぞ。パルスの長さなどがわからんからな。

ところで、本当にロジアナ使ったことある?>12
0018名無しさん@お腹いっぱい。 NGNG
パルスの長さはロジアナでもわかると思うが。もちろんなまった波形の
どこからどこまでの長さか、というならストレージオシロが強力。
ただモニタできる信号線が一般にロジアナに比べて少ないと思うので、
多数の信号の関係をつかむのは。。
0019名無しさん@お腹いっぱい。 NGNG
>12
出力ポートだったら、次にアクセスされて値が書き換わるまで内容が保持されるんだから、
ステップ実行で止められるんなら、ポートにアクセスに逝くたびに止めて、テスタで調べれば逝いじゃん。
そんなことで悩んでちゃだめだよ。

>17
パルス幅見れないロジアナなんてねぇよ!!
002018 NGNG
ただステップ動作させながら、その瞬間の静的な状態が見たいだけなら、
テスターで見るというのはいかが(笑)

私はいつもLEDのかたまりみたいなテスト用の信号線もモニタを使う。
002118 NGNG
ありゃ、かぶった。
002219 NGNG
>21
だれでも考えることは同じ(^^)
0023名無しさん@お腹いっぱい。 NGNG
>普通ハード回りのデバック時は止められない事多いけどねえ

そうそう。止められないからハード回りのタスクは常に回して
別のタスクをダウンロード&ゴー出来るようにしてデバックしてる。
見たい情報とかをprintfデバック(あ、シリアルでね)

シリアルも何もないポート1個しか自由に使えないような時はPWM
変調してデジタルオシロで読み取るとかしてるな。
でもそれは最後の手段。
まず変なバグが入らないように作って、とにかくソースを見直す
0024名無しさん@お腹いっぱい。 NGNG
>PWM 変調してデジタルオシロで読み取る
どひゃ。執念!
0025>23 NGNG
デバック用データをポートにシリアル出力する事は良くあるけどな
クロック無くても読めるように
_|~|____|~~~~~~|_|~・・・・
 0   1
てな波形ね
0026プログラムに専念したい。 NGNG
みなさま貴重な書きこみ有難う御座います。

実は、ステップ動作なんて出来ません。先輩に
聞いたら恥を全国にさらすウツケ者と怒られました。
ロジアナもあんまり使ったこと有りません。
でも、勉強はしたいと思ってます。

___________________________

アメリカ製のホストコンピュータと連接する国産機械サブ
システムとをインターフェイス確立が出来ませんでした。
両者とも相手がおかしいとクレーム付けて来ましたが
結局下の波形を測定してお互いのタイムアウト処理に行き違いが
あり、規定の時間内に国産側がレスポンス返してない事が判りました。

      連接要求送信  タイムアウト宣言
        ↓       ↓
ホスト側   ̄ ̄|______________| ̄ ̄

       要求受信    連接Ready
↓   ↓ 
サブシステム側 __________| ̄|___

ソースと共通仕様書調べれば判るだろうと言う方も
居られると思いますが、実際はこの様に証拠を掴んで
相手に提示しなければ絶対動いてくれませんので
嫌になるときが有ります。
0027プログラムに専念したい。 NGNG
矢印がずれましたが、意図は判って頂いたと思ってます。
0028名無しさん@お腹いっぱい。 NGNG
>>実際はこの様に証拠を掴んで
>>相手に提示しなければ絶対動いてくれませんので
>>嫌になるときが有ります。

これは、この業界は当然として、この世の一般原則とも言える
でしょう。

僕もとあるシステムのトラブル対応してたことがあるけれど
証拠の無いバグ報告は「証拠だして」で終わらせてました。
0029名無しさん@お腹いっぱい。 NGNG
たまに気が向いたときには、「証拠だしてね」と返事してから
こっそり調査したりして。
で、証拠が出てきてすぐに「原因がわかったので修正版をアップしました」
とかやったり…
0030プログラムに専念したい。 NGNG
先輩曰く、「測定器に頼っちゃダメだ!バッファダンプを読める様に
なれ!」と言われました。デバック作業を手伝ったのですが、
正に数字の海!と言うか暗号解読の世界と言うか16進数データが
一杯詰まったプリントアウトを読みこまされました。

その時は何も言いませんでしたが、こんな泥臭い事って有りなんですかねえ?
もっとスマートなやり方があると思うのですが。
0031名無しさん@お腹いっぱい。 NGNG
なんか、君の話を聞けば聞くほど先輩やアメリカ製の相手が正しいように
思えてならないが…。

>実際はこの様に証拠を掴んで 相手に提示しなければ絶対動いてくれませんので
そうしなければ、十分な調査の結果の指摘なのか、あてずっぽの指摘なのか、
相手は区別できないと思うが…
>その時は何も言いませんでしたが、こんな泥臭い事って有りなんですかねえ?
>もっとスマートなやり方があると思うのですが。
「スマートと思うやり方」を提案しても却下されるの?「なんかあるんじゃない?」
ではだめだと思うが…

0032名無しさん@お腹いっぱい。 NGNG
>測定器に頼っちゃダメだ
測定器で調べられるソフトの挙動はほんの一部
個々のケースでその時何を測定すべきか、を見つける作業自体はやはり泥臭いが…
測定器が出した結果も時には疑う必要がある(測定方法が不適切、測定器の接続が正しいか、測定器が壊れていないか)
0033プログラムに専念したい。 NGNG
>31
それからは測定器の取説を片手に土日に測定の練習しました。おかげで
オシロスコープぐらいは使えるようになりましたが、再現性の無い
不具合を捕捉するのに苦労しています。特に通夜運転、試験なんかの時は
試験屋がお前も泊まってけなんて言って来ます。確かに言い分判りますけど。

>32
沢山の不適合要因の中から、根源となってる原因を絞ってそれを
捕らえるのに苦労してます。「特に問題無いようなので、これで
帰らせて頂きます。」とか言う出張中のサブシステム屋の袖を
引っ張ってデバッグしたり、大掛かりな連接試験やる時はやり直しが
効かないので特にそうです。

測定器のお話しして頂きましたが、工場検査の時イキナリ測定器の
較正期限(キャリブレーション)を検査官に尋ねられて冷や汗かいた
事が有ります。(ソフト屋が何故か計測する試験もありますんで)
工場検査試験要領には記載義務無かったので意識せずに
計測品保管室から何気に持ってきた奴を使ってましたが、中には何台か
較正期限切れていました。受検後帰り道同席した品質保証の人間に
聞いたら、もし社内試験データが較正期限切れた測定器で計測してたら
全部やり直しで、それが原因で工場出荷がされそうになった事が有る
そうです。。。。。。
003431 NGNG
いろいろ苦労してるのね^^;

ハード屋さんからみればソフト屋でないと調べられない情報は
よくもわるくも一杯あるから、離してくれないんでしょう。

>サブシステム屋の袖を 引っ張ってデバッグしたり
これも「なんでもかんでも付き合って」だと愛想つかされるので、
やっぱ本当に彼が必要なケースかを見極めてあげるのがよいかと。

「いっしょにがんばってしあげましょう」モードならオシロとかは
ハード屋さんに任せて、ソフト面から情報を収集するのもよいと思うよ。

「こりゃ逃げ出さんとあかん」モードなら、やっぱ「ソフトの振る舞いが
おかしい証拠を示してください」でしょう。

まあ、個人や会社の立場にもよるので一概に言えないけれど、「ソフトが
担当です」から「製品を完成させるのが私の責任です」に考えを変えると、
また違う世界が広がるよ。
0035名無しさん@お腹いっぱい。 NGNG
最近、面倒になってきて、廉い仕事は、
Delphiで作って画面が出来たあたりで客に持っていって使ってもらい
客にバグ取りさせながら、その間に、印刷回り作ったりしています。

どうせキッチリ作っても、最初の打ち合わせと違う事言うんだもん。
お互い、この方が納得出来るみたい。
■ このスレッドは過去ログ倉庫に格納されています