'print'ステートメントを追加してデバッグを行うための適切な名前は何ですか
-
06-07-2019 - |
質問
デバッグにはさまざまな方法がありますが、デバッガを使用するのは1つですが、謙虚で怠laなプログラマーにとって簡単なのは、コードに大量のprintステートメントを追加することです。
i.e。
def foo(x):
print 'Hey wow, we got to foo!', x
...
print 'foo is returning:', bar
return bar
このデバッグスタイルに適切な名前はありますか
解決
はい- printf()
デバッグとして知られ、ユビキタスC関数にちなんで名付けられました:
使用済み によって行われたデバッグ作業を記述する さらに出力するコマンドの挿入または 慎重に選ばれたステータス の重要なポイントでの情報 プログラムフロー、観察 情報と何が間違っているかを推測する その情報に基づいています。
- printf()debugging @ everything2
他の言語のネイティブユーザーは、選択したコーディングプラットフォームで利用可能なデフォルトのprint / log /またはtraceコマンドでそれを参照していることは間違いありませんが、" printf()" C以外の多くの言語でこの手法を参照するために使用された名前。おそらくこれはその歴史によるものです。BASICとFORTRANには基本的で使いやすい PRINT
コマンドがありましたが、データ型: printf()
は、この目的のための最も便利な手段であり、多くの組み込みの書式設定オプションを提供します(そして今でもそうです)。従兄弟の fprintf()
は、書き込み先のストリームという別のパラメーターを取ります。これにより、慎重な「デバッガー」が許可されました。プログラムの出力を破損せずに、診断情報を stderr
に送信します(ログファイルにリダイレクトされる可能性があります)。
現代のデバッグソフトウェアのユーザーからしばしば見下されていますが、printf()デバッグは不可欠であることが証明され続けています。FirefoxWebブラウザー(および他のブラウザーで利用可能な同様のツール)ウェブページのスクリプトがフォーマットされたデータを含むエラーまたは診断メッセージを記録できるウィンドウ。
他のヒント
穴居人のデバッグと呼ばれることを聞きました
次の引用は適切だと思いました:
"最も効果的なデバッグツールは、慎重に配置された印刷ステートメントと相まって、依然として慎重に検討されています。
- Brian Kernighan、「初心者向けのUnix」 (1979)
これをトレースと呼びます。
私とチームは、「Oldschool Debuging」と呼んでいます。
ズボンのシートのデバッグ:)
組み込みシステムを使用している場合、最先端にあり、コーディングしている言語にまだデバッガーがない場合、デバッガーの動作がおかしく、健全性を回復したい場合は、また、マルチスレッドコードで再入可能性がどのように機能するかを理解する必要があります。...
探索的プログラミングと同じ意味で、探索的デバッグと呼ぶのが好きです。これは、デバッガーがプログラム内の複雑な型を検査したり、ヘルパー関数を個別に呼び出すほど強力でない場合、または前述の機能を直接使用するバグについて十分に知らない場合に続きます。
これを「こんにちは、ママ」と呼びますプログラミング。
この「スタイル」の「デバッグ」を指すために、VBの群衆から" MessageBox debugging" という言葉も聞いたことがあります。
多くの場合、組み込みシステムはコードを計測する唯一の方法です。残念ながら、印刷には時間がかかり、システムのリアルタイムフローに影響を与えます。したがって、「トレース」を介してインストルメントすることもできます。ここで、システムの状態に関する情報(関数エントリ出口など)が内部バッファに書き込まれ、後でダンプおよび解析されます。実際の組み込みプログラマは、LEDを点滅させることでデバッグできます;)
" Gutenbergのデバッグ" 印刷機の発明者に敬意を表して使用されています。
単に「ロギング」と呼びます。
通常、トレースと呼びます。
Visual Studioでは、トレースを追加するだけのブレークポイントを設定できることに注意してください。ブレークポイントを右クリックして、[ヒットしたとき...]を選択します。 [メッセージを印刷]を確認します。オプション。
また、.Netでは、デバッグステートメント(実際はDebug.WriteLineだと思います)をコンソールへの出力に追加できます。これらのステートメントはデバッグビルドにのみ含まれます。リリースビルドを行うと、コンパイラーは自動的にそれらを除外します。
クラシックデバッグ
手動アサーション?デバッガーフォビア?
冗長デバッグ!
(優れたロギングは、稼働中のシステムの問題をデバッグするのに非常に貴重です。多くの無駄な冗長印刷文はそうではありませんが、重要または予期しないことが発生した場合に興味深い何かを記録することは非常に重要です。デバッガーに問題があるため、構築したサービスが一部のユーザーに対して破損しているが、問題をローカルで再現できない場合、非常に狭い場所にいることに気付くでしょう。)
「クイックダーティデバッグ」という用語、または単に「ダーティデバッグ」という言葉で常に知っています。