オルタナティブ・ブログ > プログラマー社長のブログ >

プログラミングでメシが食えるか!?

Windowsプログラムのデバッグは嫌い

»

今日は午前中、ある製品のOEM供給に関しての打ち合わせに行き、お付き合いの長い方々との楽しいミーティングで、本題より雑談の方が多いくらいでしたが、良い方向に話しが発展しそうで楽しみ・・・と思ったら、次の打ち合わせまでに移動時間を考えると昼食の時間が取れないかもと、慌てて大崎→神田と移動し、神田で探したものの、混んでいたり、時間がかかりそうだったりで、次の打ち合わせの三越前まで移動したら、お値段が高すぎのお店しかなく、すこし歩き回ったものの、三越前近辺はファストフードなどは全然見つからず、諦めかけたら・・・お客さんの入っているビルでガパオを見つけました!

ボリュームのわりにお値段が高いのですが、まあ、大好物のガパオなので、食べることに。
Img_0556_2
パクチーはたっぷり乗っていてうれしいのですが、タイ独特の緑色が濃い葉っぱがありません。。あと、辛さが全く物足りない(それでも輪切りの唐辛子がたくさん入ってましたが、本物のガパオは辛いので)ものの、久しぶりのガパオに満足!

と、いきなり話しが脱線しましたが、無事に昼食も食べて、客先へ。すると、お客さんが「ブログ読みましたよ〜。怒ってますねぇ!」と。「請負仕事の愚痴」のことですね。。今日のお客さんのところからも実は請負仕事をいただいているので、一瞬ドキッとしたのですが、その方は数少ない「ソースコードレビュー」を本当にした方ですので、全く問題ありません!?

さて、今日訪問したのは、私が作ったあるWindowsのプログラムが、特定の端末で終了時にエラーダイアログが出る、という問題の調査などの為です。私がWindowsというのがそもそも間違えという気もしますが、一応、マルチスレッドのTCP/IPプログラムなので、私が担当したのでした。

まずはデバッガで問題箇所の特定を、と思って、デバッグモードでビルドした実行ファイルに入れ替えて実験したところ・・・エラーダイアログは出ません。。まあ、Windowsはそんなものです。Windowsの気に入らないことの一つに、デバッグ用DLLを使うと、通常用と意外と動きが違うことが多いということです。これではデバッグの意味がない気がしますねぇ。まあ、DLLだけ通常用を使うとかできる気もしますが、面倒なので、ログを見ながら、おそらくこのへんが怪しい、というあたりの処理を少しずつコメントアウトしながら様子を見ると、どうやらあるパターンで終了する際に、ExitProcess()で終了すると機嫌が悪いみたいです。もともと、EndDialog()もしていたので、そっちだけにすれば機嫌が良い感じでしたので、まあ、それで暫定対応としました。

Windowsはプログラムが異常終了すると、ご丁寧にエラーダイアログを出してくれるのですが、出たところでほとんどデバッグはできず、デバッグ版だと出なかったりで、実にイライラします(私が無知なだけかもしれませんが)。どうせデバッグできないなら、素直に黙って終了してくれた方がいいと思うのですけどね。。まあ、「異常のもみ消しは駄目」ですが・・・。

その後、さらに回線遅延シミュレータEthdelayProを使っていろいろテストをしていると、おかしな動きになるときがたまにある、ということで、さらにそちらも調査しました。実は終了処理関連でたくさんログが出るのがユーザに不安を与えるかも、と、終了メッセージを受けた後にログをストップする処理が入っていて(これまた異常のもみ消し?)、そのままではログの解析ができずに、ログを復活させたバージョンで動きを見たのですが。。結局は、終了時に通信処理が余りにも多すぎて、回線が遅いとユーザが待ちきれずにおかしな操作をしてしまう、というのが問題だと分かったのですが、Windowsのアプリケーション(うちが作ったものではない)は、わざと回線遅延を多目に入れたりすると、めちゃくちゃな動きになったりしてこれまた困ったものです。。EthdelayProが大活躍なのはうれしいのですが、Windows関連の開発はどうも嫌いです。。宮沢さん、助けて!?

さて、すでに今週はすっかり疲れているので、甘いものでも、と・・・
Img_0558
大好物を飲んで体を冷やし、残りの仕事は自宅でやろうと、とっとと帰宅しているところでした。

それにしても、Windowsは使うのも開発するのも苦手です。。

Comment(0)