バグで行こう(笑撃的バグレポート)

バグで行こう
笑えるバグ、悲しむバグ、泣けるバグ、 感動のバグ、最強のバグ、幸福のバグ、完全なバグ、Hなバグ、ハイゼンバグ、ダングリングバグ、ポールフェンスバグ、Windowsバグ、Javaバグ、C#バグ、.NETバグ、高度なバグ、円熟のバグ; いろんなバグの経験的レポートとその暮らし方 Life with Bug and enjoy Bug ---衝撃的バグレポート--- バグ大辞典へ

デバッグ

ウォーキング・プログラミング

メタボに脅えるプログラマの皆さま、お元気でしょうか?
健康にいいことをしているでしょうか?
プログラマは指しか動かしませんから、放置すればメタボ確実です。

ウォーキングをしている?・・・それはいいことです。
でもウォーキングしている暇がない?・・・あ、デバッグ中ですか。

そんなプログラマの皆さまに朗報です!
デバッグの片手間にウォーキングすることができます。
え?そんなこと当たり前?トイレへ行くときも遠回りしている?
いえ、それだけではダメです。ノルマの1万歩には絶対に達しません。

今回、皆様にお勧めするウォーキングは、プログラミングの片手間にウォーキングするようなやわなウォーキングではありません。
ウォーキングの合間にプログラミングするのです。・・・え、上司に怒られる?
大丈夫です。上司にばれずにウォーキングできます。1万歩達成できます。

それでは練習です。まず、ウォーキングのクラスを作成してみてください。
class Waking {
  private int count;
  private void walk(){
     if (boss.exists()) program(); else walk();
  } 
}
いいです。その調子です。上司が不在のときはウォーキングしましょう。
ええ、private にしているところがグーです。
でもこのプログラムでは上司が来るまで歩き続ける覚悟もしておいてくださいね。
じゃ、次は実際の歩いた歩数を記録できるようにしてみてください。

え、プログラムじゃなくて、本当にウォーキングしたい?
え?あなたプログラマなんでしょ?何を言ってるんですか。
プログラマならプログラミングでウォーキングしなさい。常識でしょ。

なぜなら、給料が安いから

「プログラミングには自信があるんだけど、どうもデバッグがヘタでねぇ」
「いやぁ、プログラミングに自信があるって言わないのでは?たぶん。」

「なぜプログラミングでは、何かをリファクタリングすることがこれほど大変なのか。危機感はないし、外の世界も知らないし」
「いやぁ、リファクタリングで、金儲けできないと思っているんでしょう。大損しなければいいんですが。」

「うーん、そうかもしれない。確かに、リファクタリングするのを抑えてシステムが潰れたって話はよく聞くけど、リファクタリングしすぎて潰れたっていう話は聞かないもんなぁ」
「いやぁ、ハッカーがリファクタリングすると、システムはいつまでも完成しないし・・・でも完成していないシステムの方が使いやすいような。」

「ところで、デバッグ力って、どうやって測定してるの?」
「そりゃ、時間当たりのデバッグ件数とか、バグ曲線の集束度とか」
「それって、デバッグしやすい軽微なバグが多いんじゃない。」

「プログラミングが給与を決めるのではなく、逆に給与がプログラミングを決めるのではないかと。」
「そうかも知れない。」
「OSS は?」
「給与がプログラマの質を決めている!・・・かな」

参考文献

なぜなら、給料が安いから - 思索の副作用 - Tech-On!

デバッグのコツ (ハッカー編)

1. バグは鼻で
バグは鼻で見つけるんだよ。
匂うんだよ。バグがあると。
え、どういう匂いかって?
そうさな、ツーンと来る感じかな。
まぁ、20年もすれば、おまいさんも分かるさ。
逆にいいプログラムだと甘い香りがするんだ。
2. デバッグは大胆に
ちまちましてちゃ駄目。
デバッグするときには大胆に根本的にやんだよ。
そうそう、リファクタリングもいいねぇ。やっちゃえ。
一つバグを見つけたら、近くにもいるから。
ついでだ、全部デバッグだよ。
3. テストはねちっこく
テストはそうさな、慎重に、繊細にやんだよ。
まぁ、神経質に、ねちねちとねちっこくするんだよ。
っへっへっへ、好きな子にいじわるするみたいによ。
でもよ、重箱の隅をつつくみたいにやるんじゃなくて。
ここだと思ったところを徹底的にねちっこくやるんだよ。
4. デバッグの奥義
普通は教えねぇんだが、特別だ。
バグはね、残しておくんだよ。
そりゃ、怒られるさ。
でもよ、バグもプログラムさ。懸命に生きているんだ。
バグを愛さないハッカーなんていないさ。

まぁ弟子たちにそのバグを見つけさせるんだよ。
真剣さ。だから力がつくんだよ。
バグを見つけられなければ、師匠が怒られるんだからね。
そうやって力を付けて来たんだよ。Java は。

バグによるアピールのコツ

今までは、バグが出てしまえば、上司やユーザに言い訳をし、夜も眠らずに昼は寝てデバッグするというものでした。

これからは言い訳する時代ではありません。言い訳のコツを学ばなくていいのです。流行りの謝罪会見も開かなくてもいいのです。

そうです。バグはアピールの時代です。宣伝に使うのです。攻める武器にするのです。

そんなことができるのか?
はい、できます。今日はその方法を紹介します。

コツ1
まずはバグが出たことは素直に謝ります。形式的にも必要です。
このときに重要なのが、バグをあたかも自然現象であるかのように説明するのがいいでしょう。
これが無理なときは、バグの原因を拡大解釈して、みんなに責任があるように持っていきます。上司やユーザにまで責任を持っていけばいいでしょう。さらに関係のないメンバまでバグの責任を押し付けることができれば完璧です。

コツ2
バグを解決するための期間をアピールします。
このときに重要なのは、具体的でかつ短い期間を明示化することです。
そして、その期日までに何をするかを具体化しないことです。
はい、これがコツです。例えば、以下のようなアピールになります。
「わが社の技術力を持ってすれば、24時間で解決への道筋を立てることができます。お任せください。」

コツ3
デバッグの体制や実績を積極的にアピールします。
「バグが出ても、24時間体制(但し休憩時間16時間を含む)でデバッグして結果を出します(諦めたという結果も含む)」
「1日で200件のデバッグの実績があります(但しコンパイルエラーも含む)」

コツ4
漢字が好きなユーザには、「デバッグ」を「信頼性向上施策の具体的運用」というようにしましょう。「バグ」を「品質向上に大きく影響を与える阻害要因」ぐらいにして、言い換えましょう。

コツ5
デバッグできたときは、少し間を置いてから、新たなバグを出現させます。
バグとデバッグの戦いもスケジュールに組み込んでおきましょう。
バグを段々強くしていくのが読者を飽きさせないコツです。
例えば、全社規模のバグを倒した後は、全国規模のバグを出現させます。次には地球規模、銀河規模、宇宙規模のようにします。これはドラゴンボール方式またはリンかけ方式と呼ばれています。


もうバグは守り一辺倒ではありません。攻撃の最大の武器となります。
バグを活用してアピールしてみましょう。

なお、どのような結果になっても責任は一切負いません

オフショア・プログラミング

オフショア・バグ
国内でバグ入りの設計をして、海外でバグ入りのプログラムを製造すること。
バグの責任は明確に明らかではない。
ただ、責任が自分にないことを証明するときにお互いにお互いを使える。


ニアショア・プログラミング
近くの海外で設計に近いプログラムを製造すること。
比較的近くの海外で行われる。アメリカではカナダ、ドイツでは東欧、日本では中国地方である。
設計と同じ仕様ではないが、距離に比例した設計仕様に近いプログラムを製造する。


オフショア・プログラミング
国内で上流工程をして、海外で下流工程をすること。
河川の下流の方が上流よりも広く穏やかな流れであるが、プログラミングでは逆になる。
オフショアでもその傾向がさらに顕著であり、例えば、設計は国内で半年掛けるが、製造は海外で2ヶ月で作る。テストは1ヶ月で行う。
一方、オフショアでは事務所の一人当たりの平均面積は、下流に行けば行くほど広くなる。(オンショアでは逆である)


オンショア・プログラミング(1)
屋内で上流工程をして、海外メンバも同一屋内で下流工程をすること。
紫外線によるバグを避けるために、海外メンバも含めて同一の屋内でプログラミングすることをオンショア・プログラミングという。


オンショア・プログラミング(2)
オフショアの反対の意味で使う場合もある。つまり製造も国内で行うプログラミングである。
海外も検討したが、検討の結果、オフショアにしなかったというようにも聞こえる言葉である。


デバッグ難民

デバッグ難民
デバッグ難民とはデスマに飲み込まれたプログラマのこと。
彼らは1ヶ所に集められ、食事は配給になり、仮眠施設が急遽作られ、 2交代制になり、天気と曜日が分らなくなり、日夜、ひたすらデバッグを続けるようになる。
生活道具はロッカーに入れっぱなしになり、仮眠は椅子で取れるようになり、 デバッグと並列に食事をすることが自然にできる。
バグ曲線が生きる証になり、深夜に行われるチェックインに夢と希望を託し、 翌日のテスト結果で挫折を味わうようになる。

ネットカフェ難民
ネットカフェ難民とは、漫画を読むためにネットカフェに一時避難したデバッグ難民が、パソコンがあったためについついデバッグし続けるようになること。
のだめカンタービレを読みながらデバッグすることが多く、ネットカフェではデバッグ効率は落ちるとされているので上司は注意が必要である。
リクライニングシート、フリードリンク、漫画など、デバッグ難民よりは暮らしはオタクらしいものになる。

政治難民
ネットカフェ難民が上司や常駐先担当SEに不満を持ち、デバッグから解放されるために仮病などを使って、ホテルへしけこむこと。
しかしプログラマの本能から逃れることはできず、またデバッグに戻る場合が多い。または上司によって本国へ強制送還される場合もある。
但し、非常にまれな例であるが、他のプロジェクトへ亡命が認められる場合もある。

パブロフのデバッグ

パブロフのデバッグ
パブロフ博士の犬はデバッグする前にいつも lint していた。
そして、誰かが lint するだけで犬はデバッグするようになった。

エレファントデバッグ
小象は、ハイゼンバグをデバッグできなかった。
そして成長した象は、ログやアサーションによるデバッグはしなかった。

ぬるま湯のデバッグ
カエルはシンタックスエラーのバグを気にせずにいた。
そしてバグは少しずつ複雑怪奇になっていき、カエルはデスマで死んだ。
破れた窓ガラスのデバッグ
ひとつのインデントだけがへたくそしているだけで、プログラム全体が徐々に悪くなっていく。
コーディング規約は、この汚いプログラムの存在を公式に認めるものである。
これらは、パブロフの犬、エレファントシンドローム、ぬるま湯のカエル、破れた窓ガラス理論として、プログラマに恐れられるようになった

パックマン型デバッグ

ゲーム理論を応用したデバッグ技法の一考察


1. 概要 abstract

我々はデバッグ技法にゲーム理論を応用し、 その有効性を確認した。
今回採用するゲーム理論では、効率的に評価関数を計算する方法として、従来の α-β 手法ではなく、 パックマンゲームシステムにおける 役割分散型高速追跡アルゴリズムを採用した。 これにより、不完全情報下での マイナスサムゲームの解を求める高速アルゴリズムを 示すことができた。
以下にパックマンゲームシステムの概略を示し、 次にこれを応用したデバッグ技法について報告する。

2. パックマン PAC-MAN

2.1 実行環境とその状態変化

1980年代に流行した喫茶店型テーブルゲームとして、 パックマンがあった。
パックマンでは、モンスターと呼ばれる 宇宙生物型オブジェクトを、パックマンと呼ぶ 円弧型オブジェクトが、実行環境の状態に依存して、追跡または 逃避するものであった。
実行中に動的に状態を変化させるイベントが発生する条件としては、 パワー餌と呼ぶオブジェクトの座標位置と動作中の パックマンの座標位置が 一致したときである。
また、ワープトンネルという時空間に乱雑さを 与えるイベントも存在していた。

2.2 モンスターの役割とその行動

モンスターオブジェクトは、自律分散型エージェントとして動作し、 行動規約は、役割としてデリゲーションモデルで実装されている。
具体的には、モンスターは追いかけ、待ち伏せ、気まぐれ、おとぼけの役割を 演じるオブジェクトである。 NAMCO 記法では、OIKAKE, MACHIBUSE, KIMAGURE, OTOBOKE で役割名を示し、 各オブジェクトには、AKABEI(赤べい), PINKY(ピンキー), AOSUKE(青すけ), GUZUTA(ぐず太) の名称がオブジェクト名として付けられている。

3. パックマン型デバッグ PAC-MAN type Debug

3.1 パックマン戦略

デバッグにおけるパックマンの思考ルーチンとしては、 赤べいバグとピンキーバグのデバッグを中心に行動し、 青すけとぐず太をその副作用としてデバッグするものを採用した。 これにより、効率的なデバッグ技法を提唱し、 またその有効性が確認できた。
以下に役割指向分散デバッグを概略を示す。

3.2 赤べいデバッグ

赤べいバグに対しては上司やユーザの状態変化が起こるまで、 ひたすら逃げて、デバッグを全く行わず、逃避策を中心に検討する。
しかし、デモ決定などのパワー餌が与えられたら、 赤べいを徹底的に追跡し、状態が変化している間にデバッグする。
ここで一定時間以内にデバッグしないと逆にパックマンが赤べいに の影響を受け、ボーグバグになるので、注意が必要である。

3.3 ピンキーデバッグ

ピンキーバグに対しては、ピンキーが待ち伏せしていそうな場所に ログを仕掛け、ピンキーよりも先に察知する。そして状態変化が起こるまで、 その場所を回避するようにパックマンを誘導する。
単純な実装では、アサーションを仕掛け、アサーションに反応があれば、 例外スローすることにより、ピンキーがいる危険場所から 早く立ち去るようにする。

3.4 副作用デバッグ

青すけやぐず太に対しては、パックマンは特に何もしない。
しかしピンキーデバッグにより、彼らに自動的に反応できる。 またパワー餌イベントが発生して状態変化が生じたときには、 赤べいデバッグにより、バグを追跡し、デバッグする。

4. まとめ conclusion

我々はパックマンゲームシステムをデバッグ技法に応用した。 またデバッグ効率の向上のために、役割の中で追いかけと待ち伏せを中心に したデバッグ技法を採用し、その有用性を確認した。
今後は、インベータゲーム型デバッグ、ディグダグ型デバッグを開発し、 その比較を行う予定である。

イタリア式悪酔いデバッグ

イタリア式悪酔いデバッグ
イタリア人のデバッグは、リモンチェッロを飲みながら、そしてグラッパを片手にデバッグします。バグとプログラムが一緒に見えるようになるまで悪酔いしながら、デバッグするのがイタリア式です。どんなバグがあっても昼休みは2時間以上取ります。 多少、数値が合ってなくてもイタリア式では大丈夫です。仕様と動作が多少違っても気にする必要はありません。そしてデバッグできなくても楽しく歌います。オーソレミタコトカ♪

フランス式美食デバッグ
フランス人のデバッグは、食事とともに行います。もちろんワインはデバッグツールの一つです。ここでバグを褒めるのを忘れないようにしましょう。これがデバッグマナーです。デバッグできても大げさに喜んではいけません。そっとバグをナプキンに隠しましょう。これもデバッグマナーです。フランス式では、慌ててはいけません。ゆっくりと時間を掛けてデバッグします。納期が明日に迫っていても。

イギリス式紳士デバッグ
イギリス人のデバッグは、スタウトを飲みながら強くデバッグします。決して食事とともにしてはいけません。まずさのあまりバグが増えます。また傘は必要です。突然のコアダンプに効果があります。身だしなみも大切です。ジーンズとTシャツのアメリカ式ではメモリリークします。バグに敬意を払うのはフランス式と同じかそれ以上です。そのバグがあなたを三日三晩苦しめたとしても。

来週は、ドイツ式堅牢デバッグ、ギリシア式古代デバッグ、スペイン式ガウディーデバッグの紹介をする予定です。それでは来週までチャオ。

岡山・桃太郎のバグ退治


(BGM)
リリース迫る線表
いつも一人でプログラム
バグはきっと笑ってよう
ログも途絶えたプログラム
バグが作ったそのエラー
デバッグは何もできなくて
エラーをどこにかくそうか
バグだらけなプログラム
デバッグをどうすればいいか
バグを生むよな空しさを

(ナレーション)
今回の君のコードネームは「桃太郎」。
これからバグ(コードネームは「鬼」)を退治するために、 トレーサ(コードネーム「犬」)と ブレークポインタ(コードネーム「猿」)、 インスペクタ(コードネーム「雉」)を連れて、 バグの聖地(コードネーム「鬼が島」:桃太郎スタジアムの近く)へ赴くのだ。
但し、きび団子が用意できないときは、ままかりでも可能。
(BGM)
ユーザ震える鬼が島
いつも無謀な鬼退治
鬼はきっと威張ってよう
打つ手途絶えたきび団子
鬼が振り回す金棒
鬼らは退治できなくて
僕らはこれをどうしよう
鬼が島で何をする
僕らはこれをどうしよう
鬼が元気で打つ手なし

(ナレーション)
今、万感の思いをこめて、このデバッグが終わる。
一つのバグをデバッグし、また一つのバグが生まれる。
さらば、デバッグの日々。さらば、青春のバグ。

バグ、もう君に会えないのかい?
いえ、バグが近くにいてもあなたは気づかない。
あなたは決して私をデバッグできない。

そして、プログラマはハッカーになる。

殺虫剤のパラドックス

殺虫剤のパラドックス
同じメーカの殺虫剤ばかりで虫(バグ)を退治していると、やがてバグは進化し殺虫剤に対する耐性を身に付け、その殺虫剤では効かなくなってしまうこと。

lemma 1
同じメーカのデバッガばかり使ってデバッグしていると、やがてバグは進化し、バグはそのデバッガに耐性を身に付け、デバッガが役に立たなくなること。
(使用例)
殺虫剤のパラドックスをご存知ですか。現在、お使いのデバッガばかりを使っているとデバッグできません。是非、当社のデバッガを使ってみてください。
ただいま、ダイナマイトキャンペーン中に付き、スーパージェット機能付きのフマキラーをプレゼントしております。

lemma 2
同じテストケースばかりでテストを実施すると、そのテストケースでは発見できないバグに進化すること。
(実例)
例えば、「三角形の判定問題」システムを取り上げる。最初のバグは「内角の和が180度でないときも三角形である」というバグは発見されていたが、「ユークリッド空間でないときは内角の和が180度のときに三角関係にない」というバグに進化し、このバグは発見されない。

lemma 3
同じ言葉で叱責していると、やがてエンジニアは進化し、その叱責に対する反論を滔々(とうとう)と演説すること。
(実例)
なぜ、こんなバグを出した!
バグではありません。仕様通りです。
ブランコを作るときには、木の枝に縄を掛けるだろう!
いえ、仕様ではそうでなく、「縄を枝に掛ける」となっています。
だからと言って、枝を切り落として縄を掛けるなんて。
仕様を効率的に実装しただけです。仕様通りですからバグではありません。 もしこれをバグというなら、仕様を定めた SE 、そして引いてはあなたの責任・・・
わかった、これはバグではない。

デバッグの真髄

今日は、デバッグの真髄をお伝えします。
もちろん、完全無料です。お代は要りません。

初心者は、力ずくのデバッグを行うよりも、帰納法によるデバッグがお勧めです。
帰納法的デバッグ
(1) 妥当なデータの発見
エラーが出る、または出現確率が高くなるデータを発見します。
再現性のないバグは、祈祷師か風水師に見てもらいましょう。
(2) データの構成
エラーになるデータを帰納的に構成します。
できないときは、神様になったつもりで、演繹的に考えましょう。
(3) 仮説の立案
データ構成から、バグ犯の仮説を立てます。
例えば、「マシンを北向きに配置して、鬼門のデータを入力したときにバグが出やすい」などのようにします。
(4) 仮説の証明
仮説を証明します。仮説に基づいたデータや追証するためのデータを与えます。
証明のためであれば、何をしても構いません。例え、デグレードしてもいいのです。 証明のためですから。
(5) プログラムの修正と確認
仮説が証明できれば、プログラムを証明します。
見つけたバグはゴキブリ的水平展開されている場合がありますので、 回りも駆除します。

この帰納法的デバッグは初心者向けのものですが、慣れてくれば、力ずくのデバッグがお勧めです。
力ずくのデバッグ
(1) 力ずくログ
兎に角、考えるよりも行動します。
考えても仕方がありません。兎に角、印字命令を散りばめてみましょう。
メモリダンプをして見ましょう。アサーションを入れまくりましょう。 ログを取りまくりましょう。
あなたの行動がきっと何かを変えるはずです。
(2) メンバの雪崩的増員
メンバが増えれば、デバッグできる確率は増えます。
兎に角、緊急避難的にメンバを増員しましょう。
(3) 防御プログラミング
エラーの兆候が現れたら、兎に角、防御プログラミングします。
インデックスが範囲外になったら、こっそりと範囲に収まるように変更しましょう。
メモリリークの兆候が見えたら、メモリの購入依頼の稟議書を書きましょう。
機能的バグが現れれば、仕様書を修正しましょう。

上級者は、さらにエラー推測や、エラーのお告げ(オラクルのバグに向いている)などの神かがり的手法を使いこなします。

上記の方法は、ただいま、100万円でお教えしております。

あなたの申し込みを受け付けました。 申し込みありがとうございました。

以下の口座に10万円を振り込んでください。
期日までに振り込まないと、あなたのプログラムにバグを派遣します。
これらのデバッグに対する効果は、個人の感想であり、効能や効果を保障するものではありません

これから始めるデバッグ会話術

英会話編
デバッガの予約をしたいのですが。
I'd like to make a reservation for debuggers.
Unfortunately, you have no debuggers forever.
Oh my Bug!!

日常会話編
奥様、こちらのデバッグツールはいかがでしょう。お値打ちになっております。
どえりゃ、高いがね。もっと、まからんかね。メトリクスツールなんか外してちょ。
それでは、パフォーマンスチューニングツールもお付けしますが。
バグパターン検出というのも取ったって。それで値段からも0を1個取ったって。
それじゃ、3セットお買い上げで1セット無料プレゼントします。これでいかがでしょう。
わかったがね、それじゃ、1セットこうたるがね。3セットサービスしてちょ。

コードレビュー会議編
ここでレンジチェックして、o.k. のときはセットします。
カット!君ねぇ、もっと、何というか、そう、悲しむコンピュータの気持ちを考えてだね、迫真にせまるレビューをしてほしいんだよ。
私の愛する変数 i は 5 という値をそれは思い詰めたように大事に持っていたんです。でもこれが問題の発端だったんです。配列のレンジをオーバーしていたんです。

講演編
今日は、「組込み系におけるデバッグ 2.0 ロングテールなバグ曲線」を紹介させていただきます。
ご存知のように、バグ曲線はロングテールになっています。これがロジスティックかゴンペルツかと言われていましたが、最近の研究ではロングテール部分で大半のバグがあることが分かりました。
例えば、アマゾン川支流では、売上下位10万位以下のバグで全体の3/4 のバグを占めることがわかっています。

正しいデバッグの仕方

正しいデバッグの仕方(前編)
まずは身を清めます。
3日に1回はお風呂に入るかシャワーを浴びましょう。
ジーパンにネクタイは止めましょう。

次に開発環境を整えます。
机はノートパソコンが置けるだけの場所は確保しましょう。
パームレストに直接コーヒーカップを置くのは止めましょう。

無闇に印字命令を入れてはいけません。
ブレークポイントはもっての他です。駄目です。
男なら大穴狙いの1点買いです。

デバッガまかせにしてはいけません。
自分の努力と汗と根性でデバッグしましょう。
机上トレースを3回繰り返しましょう。

バグの後始末をします。
また湧かないように、findbugsを撒いておきましょう。
3回忌が過ぎて、上司が忘れてくれるまでやりましょう。

障害管理票にちゃんと名前を付けて記録します。
バグに戒名を付けましょう。愛称は駄目です。
上司のあだ名を付けるのは効果的です。

プログラム殺人事件2



プログラム殺人事件

1: どうやら、ここで、このプログラムが殺されたな・・・
2: 犯行目的も何もかも不明で、デバッグができん
  デバッグするだけがおまえさんの役目じゃないぞ
3: 何をすれば
  プログラムの身になって、痛みを和らげてあげるんじゃ。
4: 例え、デバッグできんでも、それでプログラムは満足するもんだて。
  それでご隠居のプログラムはバグが残っているのか、犯人はご隠居だ

続きを読む

(予告) 確率的デバッグ技法

デバッグには、機械的に行う方法はありません。
そこで、注目されている「確率的デバッグ方法」を紹介します。

まず、サイコロを用意します。

可愛い子にはデバッグさせろ1

可愛い子にはデバッグさせろ
来年の新人研修では、デバッグをやります。
本当は講師もつらいのです。
しかし、ここは鬼になって、崖から千尋の谷へ突き落とす覚悟で、 可愛い新人達にデバッグをさせます。

新人思いの先輩達は、新人達のためにバグを作っておいてください。
呪いの掛かった難しいバグを作りこんでおいてください。
新人達がデバッグで苦労するのが楽しみで・・
ではなく、とてもつらいです。

デバッグはプログラマを育てます。意地悪な先輩も育てます。

データベースの障害復旧も経験させましょう。
リストアを経験させるために、データベースをこっそり破壊してみましょう。
ログファイルでディスクフルですか、いいですね。気づかれないように慎重に。

新人研修としてデスマーチプロジェクトに飛び込みで入れてみましょう。
講師もつらいですが、可愛い新人のためです。
いえ、決して、人身御供ではありません。人柱?何のことです。
育成です。可愛い新人の育成です。将来のためです。
きっと。たぶん。と思う。少しは。

「可愛い子にはデバッグさせろ」ということでよろしく

人気ブログ 人気ブログ 人気ブログ
プログラム 4 PCニュース 3 PC一般 3
ポチっとね

デバッグ定額プランとバグ保険5

デバッグ定額プラン(ユーザ向け)
日頃、バグでお悩みのユーザの皆様へ
ついに登場!!「デバッグ定額プラン」の紹介です。
デバッグ費用を定額でお支払いいただくだけで、 すべてのバグをデバッグ対応できます。
これでベンダとの煩わしい交渉をする必要が一切ありません。
デバッグ定額の詳細はこちらへ httq://www.user.debug.no/

バグ定額プラン(プログラマ向け)
日頃、バグでお悩みのプログラマの皆様へ
ついに登場!!「バグ定額プラン」の紹介です。
バグ費用を定額でお支払いいただくだけで、 あなたの作ったすべてのバグを「それは仕様です」で対応できます。
これでユーザとの煩わしい交渉をする必要が一切ありません。
バグ定額の詳細はこちらへ httq://www.programmer.debug.no/

バグ保険
日頃、バグでお悩みのユーザとプログラマの皆様へ
ついに登場!!「バグ保険」の紹介です。
バグ保険費用を定額でお支払いいただくだけで、 すべてのバグを保険でデバッグすることが可能です。
保険会社が派遣する一流ハッカーがあなたのバグをデバッグします。
バグ保険の詳細はこちらへ httq://www.bug.no/

人気ブログ 人気ブログ 人気ブログ
プログラム 4 PCニュース 3 PC一般 3
ポチっとね

踊るバグ捜査線3

踊るバグ捜査線
バグ曲線、封鎖できません。
どんどんバグが流入してきます。何とかしてください。
って言われてもね、自分が作ったんだし。

バグは現場で起きてるんだ。会議室で起きてるんじゃない。
そりゃそうだ

バグは会議室で起きてるんだ。仕様を決める会議のときに
そりゃそうだ

人気ブログ 人気ブログ 人気ブログ
プログラム 4 PCニュース 3 PC一般 3
ポチっとね

我輩はバグである1

我輩はバグである
名はまだない。
気がついたら、プログラムの中で生まれていた。
親も兄弟も知らない。まるで自然発生したかのようである。
仕方がないので、周りのデータ領域を壊していたら、今の主人に拾われた。
主人はどうやら、プログラマであるらしい。

何かつぶやいて、我輩を周りのプログラムとともに USB メモリに落としてくれた。
そして、どうやら主人の自宅に着いたようである。 我輩を自宅の PC にインストールしてくれた。
我輩は初めての環境なのでおとなしくしていた。 そうすると、主人は再現しないとか、独り言を言っているようである。

主人がプログラムを動かしたまま寝たので、我輩は行動してみることにした。 ちょっと、他のスレッドをいじってみたり、オーバーランしてメモリを破壊してみた。
翌朝、主人は我輩が行動した痕跡を見つめて、何かつぶやいていた。
暫くは、主人が起きているときはおとなしくしていようと思う。

「よ、元気でデバッグしてるかい」
「迷亭TL、それがまだバグを見つけていないんだ」
「うーん、バグってものはいると思えば、そこにいないんだ」
「また、そう言って、煙にまくんだから」

我輩がここにいることに気がつかないのか。 プログラマってものはそういうものなんだ。

この穴は何だろう。入ってみよう。あれ、出れない。
例外処理って書いてあるけど、抜けられない。我輩もここで死ぬのかな。

「兎に角、おかしな状態になったら、例外処理で スレッドを再起動するようにしたら、バグが出なくなったな。」
「そうだ、このバグに名前をつけよう。 うーん、いい名前が思いつかないから、名無しバグでいいや。」

我輩はバグである。名はまだない。

人気ブログ 人気ブログ 人気ブログ
プログラム 4 PCニュース 3 PC一般 3
ポチっとね

実録!ソースコードレビュー1

実録!ソースコードレビュー
我々はついにソースコードレビューの現場に潜入することに 成功しました。
ここは、あれですね、ネーミングにセンスがありませんね。
具体的に言えばどういうこと?
つまり、情報量がないのですよ、data, information, object, value には。
あー、objectInformationDataValue の変数名は駄目っていうことね。
それから、ここ。オブジェクト指向というものが分かっていない。 見るに耐えられない。
え、具体的には?
機能でモジュール分割しただけのクラスがごろごろいる。 似て非なるクラスが独立しているは、 世界最大を目指しているようなクラスはいるは、 複数のクラスで共通のデータを別々に持っているは、 クラスとストラクチャの区別は下手だは、
分かった分かった。それぐらいで止めて。
例外処理でこのときに、リソースがリークする。
え、どこ?
ここも同じようなバグ。悪名高きコピー&ペースト手法だ。
悪きをコピーし、正しきをペーストせずと言うやつ。
解説の山本さん、どうですか。
そうですね、これでは一方的ですね。レビュアの K.O. 勝ちになりそうですね。

いや、時間がないもので、重要なバグだけでいいから。
それは駄目です。リファクタリングするべきです。
いやいやほんと。バグだけでいいから。後でするから、他のものは
出ました。伝家の宝刀「時間がない」ですね。
そうです。この防御と見せかけて、実はレビュアを徹底的に攻撃しています。
それはどういうことでしょうか
つまりですね、バグだけ、それも致命的なバグだけ探せっていうことを 伝えています。レビュアは気持ちの悪いソースをかけて食べなければいけません。
それでは、これでソースコードレビューを終わります。まとめておいてね。
わかりました。
あ、そうそう、ついでに修正する案もまとめておいてね。
え、デバッグしろということですか。
いやいやデバッグではなくて、 障害が出ないように変更したコードの候補をいくつか出しておいてほしいんだよ。じゃーね。

人気ブログ 人気ブログ 人気ブログ
プログラム 4 PCニュース 3 PC一般 3
ポチっとね

思い出のメモリリークチェック3

思い出のメモリリークチェック
あなたの大事な記憶(メモリ)が漏れていませんか。
悲しい思い出(メモリ)をちゃんと解放していますか。
追憶を溜め込んでいませんか。

そこで、新発売の思い出チェックツール Purify を使ってみてください。
忘れてしまいたい思い出をちゃんと解放しているかが分かります。

Purify を起動して、チェックしたいプログラムを指定します。
そしてプログラムを動作させ、次のランまでの思い出情報を収集します。
彼との始めての思い出は、FirstDate.cpp の 16行目で、2048バイトです。
次の思い出は、SecondDate.cpp の 256 行目で、8192 バイトです。
しかし、ThirdDate.cpp の 64 行目で、最初の思い出とは別れました。

あなたの思い出は漏れています。
彼との生活をもう一度チェックしてみてください。

人気ブログ 人気ブログ 人気ブログ
プログラム 4 PCニュース 3 PC一般 3
ポチっとね

バグ情報の探し方 Web 編4

バグ情報の探し方 Web 編
今日は Web からバグ情報を探す方法を紹介します。

あなたのプログラムにバグがあり、自分の責任とは認めたくないときに、 Web で他人のせいにできないかどうかを調査する方法を紹介します。
見つかればラッキーということになります。

まずは、製造責任元のバグデータベースやバグパレードを見に行きます。
しかし敵もさるもの、簡単に見つからないように障害情報を隠しています。
バグ情報を一杯表示する「忍法木の葉隠し」や、 バグの説明を普段使っていない言葉で行う「逆 SEO 検索逃れ」などの手法を 使いこなしています。

私たちはそのような策略に引っかからないように、一般の Web ページも 対象にして、ググってみることをします。ヤフってみます。

ググったものから、使えるものを探すのはテクニックが必要です。
BindException, MapViewOfFile, CrtSetDbgFlag, snprintf, SyncLock, CreateFileMapping とバグで検索しても、 ここが引っかかるかも知れません。
もっとやばいのは、本当のことのように平気で嘘が書いてあることです。
検証されていないバグ情報が平然と書いてある場合があり、 さらにそれをリンク情報(ネタ元)として、 誤報情報が水平展開されることがあります。

これは ○○○○などでよく見つかります。

見破り方は、その Web ページの宣伝の種類を見る方法があります。 ゲーム系が入っている場合は相当やばいです。
さらに雑誌系も入っていれば完全にやばいです。あそこですってば
18禁ものはいいかも知れません。嘘かも知れない

Web 情報は誤報の訂記事を掲載せずに、直接訂正することがあります。
、 つまり「嘘は無かったことにする」ものがありますので、注意しましょう。 だーかーら、あそこですってば

「記事内容によっていかなる被害が生じても、その責任を負うものでは ありません」と責任逃れの言い訳をしている Web ページは、 何にも誰にでもいつでもどこでもどんなことがあっても完全に責任を負いません。

あなたがこのブログによっていかなる被害が生じても、 このブログは責任を負うものではありません。
あなたが JavaVM/.NET CLR/Linux によって蒙ったいかなる被害も このブログは責任を追うものではありません。ネタにします

人気ブログ 人気ブログ 人気ブログ
プログラム 4 PCニュース 3 PC一般 3
ポチっとね

冷凍デバッグ3

冷凍デバッグ
現代の科学ではデバッグできない不治のバグを冷凍保存し、 未来の科学力でデバッグすることを「冷凍デバッグ」と言う。
バグが入ったプログラムをサランラップに包んで、零下 16 度の冷蔵庫で ガリガリ君と一緒に保存する。
未来のデバッグに多少は役立つので、バグを作ったプログラマもついでに 冷凍保存しておくとよい。
コールドスリープしたバグは、「だんまりバグ」と呼ばれ、 プログラムも活動停止する。
これは未来の科学を信じてデバッグされるのを待っているので、 このプログラムを決して触ってはいけない。もちろんリセットしてはいけない。

解凍バグ
冷凍デバッグするために、バグ入りプログラムを解凍したもの。
解凍すると膨張してサイズは大きくなるので注意する必要がある。
最近は冷凍技術が進歩しているためにバグの保存状態はいい。
昔流行った、MPEG-4 などの非可逆の冷凍では、 プログラムは冷凍前の状態に完全には元へ戻らない。
しかしバグがデバッグされている可能性もある。
なお、マニアの間では冷凍されたバグのままで食することがある。
これは「ルイベ」と呼ばれていて、寄生虫(バグ)が冷凍することで デバッグされることを利用したものである。

あなたのバグがどうしてもデバッグできないときは、 冷凍デバッグをお勧めします。
バグの冷凍保存には、瞬間バグ冷凍ができる 「デジタル冷凍マシン HAL9000」はいかがでしょうか。
ただ今、ハロウィンハッピーハッカー祭として、 デジタル冷凍マシンをお買い上げの方に、 秋モデルの最新デバッグマシーン「赤鉛筆」をお付けします。

人気ブログ 人気ブログ 人気ブログ
プログラム 4 PCニュース 3 PC一般 3
ポチっとね

■インクリメンタルバグ■インクリメンタルデバッグ■インクリメンタルサーチ■インクリメンタル開発4

インクリメンタルバグ
バグをデバッグしても、そのバグが分裂増殖して却って増えてしまうバグ。

インクリメンタルデバッグ
デバッグ中に、別のデバッグをする破目に陥り、 休日返上で休みなしにデバッグすること。
その結果、デバッグ件数は増加するが、デバッグされたバグ数は増加しない。
パラレルデバッグか、パラノイアデバッグになることが多い。

インクリメンタルサーチ
探し物をしているときに、別のものを探すこと。
例えば、「プロ」を探していたところ、「プログラマ」を探す破目になり、 「プロ」は探せないこと。

インクリメンタル開発
開発プロジェクトが完了して、日本海庄屋で打ち上げをしていたところ、 新しい機能を追加することになり、庄屋でそのまま開発を続けること。
これが無限ループになって、最後には開発がだんまりになってしまうこと。

人気ブログ 2位 人気ブログ 11位 人気ブログ 37位
プログラム 4 PCニュース 3 お笑い 3
順位は欲望であり現在の順位を保証するものではありません

桃太郎伝説 「バグが島のバグ退治」5

桃太郎伝説 「バグが島のバグ退治」
昔々、あるところにプログラマのおじいさんとおばあさんが 住んでおったそうな。
おじいさんは山にプログラミングしに、おばあさんは川にシステムテストを しに行ったんだとさ。
おばあさんが川でテストケースを作っているとな、川の上流から、 それはそれは大きな大きなログファイルに包まれたプログラム一式が 流れてきたそうな。
おばあさんは早速、家に持ち帰って、おじいさんと一緒に、 ソースコードレビューしたんだと。そうすると、プログラマの中から、 桃太郎が生まれたそうな。

桃太郎は大きくなって、バグが島にバグ退治をしに行くことになったさ。
おばあさんはデバッグツールときび団子を桃太郎に持たせたそうな。

「桃太郎さん、桃太郎さん、お腰に付けたきび団子、一つ私に下さいな。」
バグが島へ行く途中で謎のハッカーの名札をした犬が声を掛けてきたそうな。
「バグが島でデバッグを手伝ってくれるなら」
「バグ殺しのログ使いとは私のことです。ログ入れならお任せを」

「桃太郎さん、桃太郎さん、お腰に付けたきび団子、一つ私に下さいな。」
次は謎のハッカーのはちまきをした猿が声を掛けてきたんだと。
「パフォーマンスチューニングの鬼と呼ばれる私にお任せを。負荷掛けには自信があります。」

「桃太郎さん、桃太郎さん、お腰に付けたきび団子、一つ私に下さいな。」
ハッカーのたすきを付けた雉(きじ)が声を掛けてきたんだとさ。
「高い空から地上のバグを見つけるためのドキュメント作成ならお任せを。」

こうして、桃太郎とゆかいな仲間達は、バグ退治にバグが島へ向かうことに なったそうな。

今日はここまでなんだ。来週はいよいよ桃太郎たちがバグと戦うデスマーチ が見られるんだ。来週まで楽しみにしてな。

人気ブログ 2位 人気ブログ 7位 人気ブログ 32位
プログラム 4 PCニュース 3 お笑い 3
順位は欲望であり現在の順位を保証するものではありません

阪神優勝 協賛セール デバッグ大安売り2

阪神優勝 協賛セール

デバッグ大安売り


阪神がセ・リーグで優勝したのを記念しまして、 デバッギングを大安売りいたします。
通常は3個デバッグするところを、今回は5個デバッグします。
なんと、66% お得になります。是非、この機会にご用命ください。

Java なら、お得なセット価格 100万円でご提供致します。
Java システムのバグ 5個をたったの100万円でデバッグ致します。

ジャジャーン
ここで阪神優勝ダイナマイトキャンペーンとして、 今回は特別にどんなバグにも効く「ガマの膏薬(こうやく)」を無料でプレゼント。
バグプログラムの周辺に付ければ、ピタリと障害が止まります。

阪神優勝セールは、阪神が次にセ・リーグで優勝するまでですので、 お早めにお求めください。

人気ブログ 1位 人気ブログ 8位 人気ブログ 27位
プログラム 4 PCニュース 3 お笑い 3
順位は欲望であり現在の順位を保証するものではありません

24時間デバッグ「バグは地球を救う」2

24時間デバッグ「バグは地球を救う」
今年の24時間デバッグは、8月28日からです。 今年のテーマは「生きてる?」です。
バグによって、プロセスが生きてるかどうかをテーマにしています。 あなたの「生きてる」はなんでしょうか。
ping で ICMP レベルの確認します。これが私の生きてる証です。

今年は、スレッド同期ミスが100kmマラソンに挑戦します。 これは24時間走りっぱなしになります。無限ループします。
果たして、この無限ループを24時間でデバッグできるでしょうか。

今年のメインハッカーはスマップドテーブルのバグトリシンゴです。
募金はメイド喫茶、ギャラリーフェイク、ホワイトベースで受け付けています。 皆様の真心のバグをお待ちしております。

人気ブログ
ランキング
人気ブログ
ランキング
人気ブログ
ランキング
プログラム4 PCニュース0 社長6
クリック、プリーズ

バグ狩4

バグ狩
本日は皆様をバグ狩に招待致します。

バグ狩とは何か? それは19世紀ごろにプログラマ貴族の間に流行った遊びです。
正常に動作するプログラムにわざと野生のバグを放し、それを 狩るという遊びです。

今日は、その頃に行われたバグ狩の伝統に則って行います。
今日は19夜。バグ狩の絶好の夜です。それでは伝統に則って、 夜12時よりバグ狩を行います。
初心者の方はデバッグツールを使っても構いません。 バグ狩に慣れてきた方は是非素手で狩ってみてください。 これでこそバグ狩の醍醐味が味わえます。

バグを狩ったら、記念にバグ拓をしてみてはいかがでしょうか。 バグとの記念写真も承っております。
それではお楽しみください。

人気ブログ
ランキング
人気ブログ
ランキング
人気ブログ
ランキング
プログラム4 PCニュース2 社長4
クリック、プリーズ

リファクタリング詐欺4

リファクタリング詐欺


ちょっと、おばぁちゃん。このプログラムは直した方がいいよ。
直さないとこのプログラムだけでなく、全部駄目になっちゃうよ。

ほら、ここなんか、バグが湧いて、腐りかけてるのわかる。
このままだと、本当に危ないよ。
心配して言ってるんだから。ちゃんと聞いてね。

早速だけど、ここにね、トレースを入れるでしょう。 長持ちさせたいからサイクリックにして純金製のログにしますね。
えーと、ここには、バグ防止のコードを2重にして入れますね。 これは assertif 文に、それから catch を入れて完全に守りますね。

それじゃ、費用は1000万円ね。これでもう一生安心だから安いもんでしょ。
はい、どうもありがとうね。これからもアフターフォローで次々販売申し込んで あげるね。

え、何。何にも変わっていないって?
それはリファクタリングなの。 外部仕様は変えていないの。分かる。
だから、違うって。落ちにくくなったでしょ。 そうそう、3日も持ったならいい方よ。
何、言ってんの。あんた素人なんだからさ、私達に任せてくれる。
それじゃ、明日、専門のもの、行かせますから、安心して。ね。

人気ブログ
ランキング
人気ブログ
ランキング
人気ブログ
ランキング
プログラム4 PCニュース2 社長4
クリック、プリーズ

楽しいデバッギング・楽しいテスティング

楽しいデバッギング・楽しいテスティング
プログラミングはもちろん楽しいが、デバッギングはもっと楽しい。

バグを追い詰めるドキドキ感が堪らない。

テスティングも楽しい。
他人のプログラムのテストなら、一層楽しい。
部下のプログラムのテストも、同僚のものも、 先輩のも上司のも楽しい。
バグを見つけ、デバッグするヒントをそっと教えるのも楽しい。

何、いい子ぶってんのよ。

デバッグが楽しいって、自分がバグを出したから、やってんでしょ。
デバッグが楽しいって、自分に言い聞かせて、やってんでしょ。

テストが楽しいって、そりゃ、他人の失敗を暴くのは楽しいでしょ。
あんた、それとも他人をいじるのが好き?止めとき。

明日からも、楽しくデバッグとテストをやりましょう。

人気ブログ
ランキング
人気ブログ
ランキング
人気ブログ
ランキング
プログラム4 PCニュース3 PC全般3
クリック、プリーズ

デバッグ ただいまリハビリ中 !!

デバッグ ただいまリハビリ中 !!
暫くデバッグをしていないとデバッグを忘れてしまいました。
だって、バグを出したのは数年ぶりですから。

「えーと、なに、印字命令のちりばめは一番へたくそなデバッグ方法?」
「デバッガを使っても、ロギングツールを使っても、 印字命令のちりばめは止めましょうか、なるほど」
「狙い撃ちして、ログ出力をするようにしましょうか。なるほど」
「あれ、どうして、ここのスタックにこんな値が入っているんだ?」

デバッグ リハビリ第一段階終了。
「やはり、自分のコードは悪くない、絶対 JavaVM が悪い。」
「え、なに。人を疑うのは止めましょう。自分が悪いのがほとんどですか、なるほど」
「デバッグは逆転満塁サヨナラホームランのようなものです。最後まで諦めるなか、なるほど」
「でも、10点差ぐらいあるように思うけど」

デバッグ リハビリ第二段階終了。
「やっと、動いた、デバッグ完了!」
「難しかったな、このコンパイルエラーは。」
「さすが、JavaSE 8.0 」

人気ブログ
ランキング
人気ブログ
ランキング
人気ブログ
ランキング
プログラム4 PCニュース3 PC全般3
クリック、プリーズ

疑惑の同値分割

疑惑の同値分割
■■■同値分割で疑惑発覚■■■

当編集局が極秘裏に入手した情報によりますと、 テストケース作成において、同値分割に疑惑があった模様です。

疑惑1南北問題
ブラックボックスと化したプログラムにおいて、 入力を南北に同値分割する問題です。
38は南か北か、それとも西か、さらには中かで揉めている。

疑惑2 4色問題
ブラックボックスと化したプログラムにおいて、 入力を同値分割し、それを地図として表現します。
これは4色に塗り分けられます。
しかし任意の国は他の任意の国に対して境界線があるとは限りません。 そのため、地図を見ただけでは境界値を見逃すというバグが 発生する可能性があります。これが境界値問題です。
CFD のおかま問題よりもシビアです。

このように同値分割はシステマティックに行えず、その作成では疑惑があります。
これを受けて、テストケース協会では、 企業のバグ部門に対して、テストケースのバグ点検を命じました。

この影響を受けて、各地のテストケースは暴騰しています。 供給不測になったテストケースの弱みをついて、 バグが大量発生して暑くなっています。
体に気をつけて、デバッグしてください。

人気ブログ
ランキング
人気ブログ
ランキング
人気ブログ
ランキング
プログラム3 PCニュース4 PC全般3
クリック、プリーズ

ケースフローダイアグラム CFD の許しがたいバグとその愛

ケースフローダイアグラム CFD の許しがたいバグとその愛
ケースフローダイアグラムって、知っています?
近頃、流行のテストケース作成のためのお絵かき!

原因-結果グラフよりもテストケースが少なくなるって言うじゃない。
でもね、そんなの嘘ですから!!
残念、原因-結果グラフの最密充填工法を知らない?
それに、共有する同値分割を3個以上にすれば、悲惨な目に合いますから。

(1) 50才台の女性はビール無料!
(2) 60才以上の人はビール無料!!
このときの CFD は?

この恣意的な例のときは、確かに原因-結果グラフよりもテストケースは減ります。
お腹も減ります。喉も渇きます。

でも、普遍的な例を考えてみましょう。
(1) 50 才台の女性とおかまは日本酒無料!
(2) 60 才台の男性とおかまは日本酒無料!!
でも、普遍的な例を考えてみましょう。
(1) 50 才台の女性とおかまは日本酒無料!
(2) 60 才台の男性とおかまは日本酒無料!!
(3) 70 才台の女性と男性は、なんと日本酒無料!!!
(4) 80 才以上の人は、なんとなんと日本酒無料!!!!
このときの CFD は?
勇気と根気と命令を疑わない純真さがなければ書けません。

原因-結果グラフがいい、間違いない

CFD の愛、覚えていますか?
根気と勇気、そして純真な愛を覚えていますか?

人気ブログ
ランキング
人気ブログ
ランキング
人気ブログ
ランキング
プログラム3 PCニュース4 PC全般3
クリック、プリーズ

領空侵犯 バウンダリチェック

バウンダリチェック
境界を巡る争いは大きな問題があります。
隣地との境は裁判になり、国境は戦争になります。

ここにもう一つの境界があります。
プログラムのデータ境界です。

例えば、以下のようなプログラムを考えてみましょう。
int foo () {
  int a[10];
  int b[10];
  int c[10];

  b[-5] = 505;  // 不法侵入
  b[15] = 505;  // 領空侵犯
}
auto 変数だけでなく、構造体の要素でも同じことが言えます。

配列 b のバウンダリをチェックをすることが必要です。
そうしないと、配列 b は、配列 a から、 不法侵入で訴えられます。
そして配列 c からは領空侵犯として、撃ち落されます。

領空侵犯を監視するために、動的解析ツールの Purify や DevPartner などを 使います。
しかし、動的解析ツールは、 スタックフレームのオーバーフローだけを見るために、不法侵入も 領空侵犯も見破ることができません。
大きく侵犯したものは見つけることはできますが、ちょこまかと侵犯する ものは見つけられません。

動的解析ツールは「どうせ不法侵入するのであれば、大胆に大きく侵入しろ」 と言っています。
勝手口付近に侵入するのではなく、そのまま侵入して、寝室を抜け、 トイレを抜け、さらに玄関を抜け、交番まで侵入するぐらいの オーバーフローをするように心がけましょう。

人気ブログ
ランキング
人気ブログ
ランキング
人気ブログ
ランキング
プログラム4 PCニュース3 PC全般3
クリック、プリーズ

究極の自動テストツール

自動テストツール
これであなたもテストが簡単にできます!
例えば、JTest や NTest の自動単体テストツールを知っているでしょうか。
分岐網羅(branch coverage)を満たす単体テストケースを自動生成し、実行します。そして、その結果をレポートします。
また AppScan は Web アプリケーションの自動テストツールです。 BugSuki もバグ自動生成ツールです。

但し、レポートの解読には、普段の単体テストと同じ時間が必要です。

ついに究極の自動テストツールが完成しました。
あなたは何もしなくても結構です。
このツールは、テストだけでなく、驚くべきことに、バグの原因を切り分け、バグの犯人を見つけ、 責任者を追求し、さらにユーザに詫びることもします。
その究極のツールは「kacho」です。さらにバージョンアップした「bucho」も 用意しています。

但し、テストは指示を与えるだけで、バグの切り分けは過去の誤った経験で行い、 犯人は真犯人でなく、 責任者は冤罪であり、 ユーザはもっと怒り出します。
デバッグは決してしません。ただ祈るだけか、怒鳴るだけになります。
そして残念ながら、待つこともしません。 あなたは、直ぐにデバッグする必要があります。

人気ブログ
ランキング
人気ブログ
ランキング
人気ブログ
ランキング
プログラム4 PCニュース3 PC全般3
クリック、プリーズ

オブジェクト指向デバッグ入門

先生、オブジェクト指向デバッグって何ですか
オブジェクト指向の概念とその資産を利用することにより、デバッグを効率的に行うことです。

嘘でしょう、先生。今、思いついたんでしょう。
まぁ、オブジェクト指向を付ければ売れるかと思ったものですから。

先生、それではオブジェクト指向デバッグの概略を教えてください。
まず、カプセル化と情報隠蔽を行います。でもバグがあるプログラムを対象とするのではなく、バグがないことが知れた正しいプログラム断片をカプセル化します。

先生、プログラムはオブジェクト指向ですから既にカプセル化されているのではありませんか。
まぁ、そうなんですが、それを別の断面でさらにカプセル化します。正しいコードとデータ構造をカプセルします。この意味で、アスペクト指向デバッグでもあります。

先生、これで終りですか。
デバッグ対象を差分化する差分化デバッギングします。つまり、デバッグ対象を広げたり縮めたりするのですが、その差分のみを注目して、継承デバッグや委譲デバッグします。

先生、チョー、当たり前のような気がするんですが。差分化デバッグっていうのは。今までのデバッグとどう違うんですか。
同じですよ。全く。名前を付けたということだけが違います。例えば、デザインパターンでもそうです。ラッパーと呼んでいたのを何故かデコレートと言い換えているだけです。オブジェクト指向は、実は「ネーミング」指向なのです。

先生、もう終りですよね。
いや、多態性を使ったデバッグがあるのです。

先生、もう終わりにしましょう。チャイムも鳴りましたし。
それにオブジェクト指向デバッグは、さらにオブジェクト指向チューニング、オブジェクト指向テスト、オブジェクト指向運用へと繋がっていきます。

明日の対談は、どんなバグでも簡単に調理できる「電子レンジデバッグ」、バグをまとめてきれいにする「洗濯機デバッグ」、バグを凍結させて忘れてしまう「冷蔵庫デバッグ」など、「白物家電デバッグ」について行う予定です。

人気ブログ
ランキング
人気ブログ
ランキング
人気ブログ
ランキング
プログラム3 PCニュース4 PC全般3
クリック、プリーズ

デバッグ機動捜査隊

デバッグ機動捜査隊は バグ発生現場に直ちに駆けつけ、バグの捜索を徹底的に行います。

「こちら82分署、バグは例外処理ルーティンに逃走した模様。」
「わかった、例外処理のログ出力を中心に、直ちに包囲網を引く。」
「いた。直ちに追跡開始。トレースログの用意を。」
このようにデバッグ機動捜査隊の果敢なデバッグによって、見事にバグを逮捕することができました。
「おい、名前は。」
「・・・初期不良です。」
「初期不良じゃないだろ。常習だろ。」
「・・・初期値設定ミスです。」
「ミスじゃないだろ。エラーだろ。」
「それで、何回目だ。」
「初めてです。」
「おいおい、正直に言えよ。前科はどのくらいだ。」
「3回目です。」
「わかった。これからは正しくバグの道を進むんだぞ。」
このようにバグを追い詰め、さらに教え諭して、更正させます。
我ら、デバッグ機動捜査隊は、バグを憎んでプログラマを憎まず。

人気ブログ
ランキング
人気ブログ
ランキング
人気ブログ
ランキング
プログラム3 PCニュース4 PC全般3
クリック、プリーズ

デバッグ革命の夜更け

全世界のデバッグ職人よ、立ち上がれ!!
今こそ、バグで汚れたプログラマを清浄の地へ導いていこう。

全世界のデバッグ職人よ、行動を開始せよ!!
バグを徹底的にデバッグしよう。創造的破壊でデバッグ革命を起こそう。

世界デバッグ革命史序章より「デバッグ宣言」抜粋



革命デバッグ職人の皆様、今日も元気でデバッグしていますでしょうか。

本日は、誉あるデバッグ職人にお願いがあります。バグは私たちデバッグ職人の貴重なリソースです。
バグは最強の生物ですが、ひ弱いです。プログラムに寄生するしかない生物です。
太古の昔、ミギーと呼ばれた人類の友がいました。バグも私たちデバッガ職人の友です。バグとデバッガ職人は協力していきましょう。

寄生バグ6巻より「名探偵登場」抜粋



そして世界は、バグとデバッグ職人が共生する調和と平和な世界へ、美しい混沌の世界へとレベルアップしました。

人気ブログ
ランキング
人気ブログ
ランキング
人気ブログ
ランキング
プログラム3 PCニュース4 PC全般3
クリック、プリーズ

手打ちデバッグ

うちのは、手打ちでぇーい。そんじょそこらのデバッギングと違うんでぇ。
ブレークポインタぁ、そんなんもんに頼るんじゃねぇ。
こちとら、伝統的な「印字命令の散りばめ」でやってんでぇ。

何、アサーションだぁ。そんなんもん、無闇矢鱈にやるんじゃねぇ。ここと決めたところに、そうさな、ガチっとチェックするんでぇ。

ロギングだぁ、そんなんもんは止めろ。資源の無駄遣いだぁ。
ほれ、京都議定書って、もんがあんだろ。無駄使いすんじゃねぇ。二酸化炭素を出すんじゃねぇ。

おめぇのやってんのは、デバッガを使ってんじゃねぇ。使われてんだよ。この馬鹿が。修行が足らんぞ。

デバッガていうのは、この道を20年やってから、使うんだぁよ。わかったか。
おめぇには100年早いんだよ。


それじゃ、おまえに、本当の手打ちデバッギングって、言うものを教えてやろう。耳をほっぽじって聞きやがれ。

まずは、バグがありそうなところを検討を付けるんだ。
え、それが判らない。馬鹿野郎、デバッガばかりに頼っているから、プログラマの勘ってやつが掴めねぇーんだ。わかったか。

まぁ、そうさな、なんて言うかな、濁っている場所があんだよ。ソースを眺めていると。
そこを徹底的にやっつけんで。見当付けてからは、デバッガを使っても、まぁいいさね。最初から無闇矢鱈に使うんじゃねぇ。

わかったか。まぁ、いいや、おめぇもがんばれよ。

人気ブログ
ランキング
人気ブログ
ランキング
人気ブログ
ランキング
プログラム3 PCニュース4 PC全般3

バグ大僧都の新年対談「今年のバグの抱負」

bugbugkun3 私はバグ大僧都のバグバグと申すものです。
bugkun2 私は教師補のバグです。お見知りおきを。
bugbugkun3 すべては無じゃ。無からバグは生まれる。
bugkun2 それは去年言いましたよ。
bugbugkun3 真理は不変じゃ。普遍でもあり、不偏なのじゃ。
bugkun2 またまた、あんたは、いつもの問答で誤魔化す。そんなんじゃ
bugbugkun3 えーい、黙らんか、平僧の分際で。
おほん、今年のバグはじゃ
bugkun2 へーい、分かりました、じゃ、言ってください。

総合198位

続きを読む

デバッグの囚人

囚人はデバッグの檻から出るためには、バグを作ってしまったことを心から反省しなくてはならない。そして真人間になってデバッグすることを誓うのである。
 
これをせずに檻から脱出することはできない。脱獄を試みる囚人は、楽しかったバグの思い出をディメンタによって吸い出されてしまって、苦しいデバッグの思い出だけになるからである。
続きを読む

再現しないバグの再現方法

再現しないバグ、それは存在するように見えるが実は再現しにくいバグであり、条件さえ整えば、「再現する」。これは決定論者の言い分。


非決定論者はそうではない。未来は決定されない。再現するように見えるのは似ているバグが新規に発生しただけ。


決定論者は言う。デジタルの世界は1と0に収斂される。だから非決定的な事は起こらないと。非決定論者は言う。時間は量子化できないと。決定論者曰く、時間もデジタルの世界では量子であると。


さて再現しないバグの再現方法は


(30)

続きを読む

秒殺デバッグ

バグが現れてからデバッグ完了するまでの時間が1分未満であるとき、それを秒殺デバッグと呼ぶ。


コンパイルエラーとなるバグは一般的にデバッグが容易であるのでそのデバッグの価値は低いが、基本的な秒殺デバッグである。次に容易なのが順序を持った初期化ミスである。例えば、Java の static ステートメントによる初期化の順序のミスによるものがある。


秒殺を可能にするためには、タイピングの速度も大きく影響する。つまり、華麗な指使いがあってこそ、秒殺デバッガになれるのである。


秒殺デバッグを連続で出す技は中級以上の技術で、マシンガンデバッグと言われている。さらにバグとともにプログラムそのものも消し去るという、まぼろしのデバッグテクニック「デリート」の存在が過去に確認されている。


(30)

続きを読む
コメントいろいろ