2009-05-27 4 views
6

あなたはちょうどアイデアがなく、次に何を試していいのかわからないバグに遭遇してしまい、本当に迷惑になりますか?このモードから抜け出す方法に関する一般的なアイデアはありますか?デバッガのブロック

答えて

11

私がこのようにブロックされたとき、私が見つけた最良のアドバイスはしばらくの間休みです。それは長いランチに行くのか、1日のために出発するのか。新鮮に戻って新しい姿をとってください。ほとんどの場合、答えはあなたを顔で見つめています。これまでの10分のコーヒーブレイクでは十分ではありませんでしたが、あなたの走行距離は異なる場合があります。

第2に、あなたの同僚と話してください。試したことのすべてを歩いてください。彼らに聞くように頼んでください。あなたがそれを何度も話している間、答えはあなたに届きます。

これは、デバッグ時に最も頻繁に使用する2つのブロックです。

+0

はい。ピアに問題を説明しようとすると、確かに、正しい順序で思考の訓練を得るのに役立ちます。 – Naveen

+0

http://c2.com/cgi/wiki?RubberDucking – JesperE

+0

数週間の休日は私にとってはうまくいくはずです:) – leppie

3

私は通常休憩を取る...それは動作しない場合は、私は問題で寝る。 (事実、正直言って、私は問題をめちゃくちゃに思う眠れない夜を過ごすと言うべきです)。

ほとんどの場合、私は午前までに可能な解決策のリストを用意しています。 :-)

2

私は通常、いくつかの手順取る:彼らは私が(問題を絞り込むのに役立ちますような方法でバグと場所ロガーのメッセージを持っている機能に関与しているコードで

  • を見てP)
  • をするとき、問題を明確に理解を持っているヒントを
  • コールクライアントを私の先輩の同僚に尋ねる:これは、後であなたはもうそのイライラしないときにロガーを見て、そしておそらく有益なヒントを見つけることができます生じます。
1

私は通常、最初から構造的なアプローチを取っていないときにその気分になります。 問題が生き残ることができる領域を繰り返し狭くし、エラーを再現できる最小のコードベースを書くことを試みることによって、私はまだ失敗していません。

0

私はまた、それは誤った前提を示している可能性があり

...あなたが問題のようなものに実行する場合、いくつかの深刻なリファクタリングを行うための時間だと思います。プログラム上、あなたが「ただの」ものであると仮定してください。メソッドを参照しないでください。不変式は、スタック内にあるメソッドが壊れています。

0

他には休憩や「寝る」ことが記載されています。この技術は、(とりわけ)インキュベーションとして知られています。アイデアを取り入れると、さらにそれを取ることができます。

実際に問題を残しておきたいという重要な側面の1つは、後で回答が得られると確信していることです。そうでなければ危険な、特にそれで眠っている場合は、あなたが最後までそれを心配するということです、これはあなたの心が一晩でキャッチされる無限のサイクルになります。あなたはたぶん、多くの円形の夢を夢見て休んだあまりにも目を覚ますことになります。これはあまりにも多く、それはうつ病の道です。あなたのキーボードスマッシュないように、全く重要

5
  • 五分の休憩

  • お姉さん

またはあなたの2歳の息子に電子メールで問題を説明します。誰かwouldn't understand a word *あなたが非常にはっきりと説明していない限り。あなたは電子メールを送信する必要はありません、あなたはそれが内側に理解していることを確認する必要があります。あなたは何度も何度も問題を再現することが突然あなたに間違っていたことを明白にさせることに驚かされます。これは、あなたの前提が問題に関するものであったかどうか、そしてそれらが必ずしも正しいとは限りません。

*そのリンクは、別のSOの質問でJaredParによって優れた答えです。すでに家族のペット「を電子メールで送信」しました。この時点することで、同僚

  • を話し、あなたがうまくいけば、すべての愚かな側面を紹介してきたことを知っているので、それは話をする時が来ました本当の人に彼らは、過去にこのような状況を思い起こさせるいくつかの曖昧なことを経験しているかもしれません。問題が何であるかについて明確であることを確認してください。だと思います。あなたはそれらを偏らせたくありません。彼らが試したことについて話すことができますし、その地域に問題があると思う理由を説明します(あなたは正しいかもしれませんが、そうでない場合でも自分の提案に心を閉じたいとは思わない)そう思える。

    • この時点で再度コードを見

    、あなたがうまくいけばそれほど暴力的であるべきであり、あなたは新しいアイデアで武装する必要があります。バグを再確認することから始めます。簡単なステップですが、私たちのテストスクリプトではなく、私たちのコードではなかったバグで、何時間も挫折しました。バグをもう一度確認したら、一番上から始めてください。すべてを確認してください。あなたが100%自信を持っている最後の点にブレークポイントを置き、出力が再び壊れることがわかるまで、あなたの道を進んでください。これは大成功です。調査するコードブロックが小さくてすみます。次に、必要に応じて、同僚を引き込んで実際の実行コードを確認します。

0

別の良い選択肢は、他の開発者/チームメンバーからアイデアを返すことです。時には、あなたが考えなかった質問をします。

単独で作業する場合は、いくつかの異なるアプローチでトラブルシューティングを行うためにチャットできる仲間の開発者がいくつかあることをお勧めします。新鮮な視点があなたが必要とする画期的なものになれる頻度は驚くでしょう。

0

デビッドUngars「シャワー手法」を試してみてください。

「あなたは、タイプを入力するか知っている場合は、入力するかわからない場合は、シャワーを浴びて、あなたが入力するものを知っているまでシャワーにとどまります。 "

大多数がやりたいことを召喚するこの種の召喚。休憩する !休憩の前にやっていたことを考えていない限り、どんな休憩でも問題ありません。どんな形の気晴らしも良いです。

乾杯!

0

私は通常、問題の方法/機能を段階的に実行します。バグがそこから来ていると仮定しないでください。バグがどこから来ている可能性があります。

適切なデバッガを使用し、一連のprintfsを使用しないでください。