デバッガーの使い方を学ぶ

 

作業中のプログラムのバグを修正する場合、重要なことはシステムの状態を理解することです。これには、ユーザー入力、永続データストアからの保存された値、および現在の時刻などの非定期的な情報が含まれます。しかし、最も重要な状態は、メモリ内のプログラムの状態です。バグが発生したときに実行されている関数またはプロシージャは何ですか?また、その時点ですべての変数はどのように見えましたか?

テストまたは一連の手順で問題を再現することは、問題を解決できるようにするために重要です。デバッグ環境が問題が発生している環境と同じであることを確認するために、できる限りの手順を実行する必要があります。開発では正常に機能したが、本番環境では惨めに失敗した1つのプログラムをデバッグしていたことを覚えています。これは、javaをjavascriptにコンパイルするGoogle WebToolkitを使用していました。開発中は、コンパイルしても難読化された変数名が異なっていました。それが問題になりました。コンパイルされたJavaScriptと、正しく名前空間が設定されていない別のJavaScriptとの間に変数名の衝突がありました。私は髪を引き裂き、本番環境でconsole.logステートメントを入力することになりました。

そして、それが多くのデバッグが行われる方法です-ログステートメントをファイルに出力します。あなたはそれが非常にポータブルおよびカスタマイズ可能ですが、そのように多くの問題を解決することができ、そしてそれはあなたに与え、いくつかのプログラム状態への洞察を。

ただし、はるかに優れた解決策は、実際のデバッガーを使用することです。それらは少なくとも80年代から存在しており、ログステートメントよりもプログラムの状態についてはるかに多くの洞察を提供します。任意の変数の状態を確認できます。コマンドをインタラクティブに実行できます。どこでも停止して、プログラムを再開できます。インタラクティブデバッガーと自動テストを組み合わせると、目前の問題に焦点を合わせるのに役立つ非常にタイトなフィードバックループを作成できます。

主要な言語のほとんどには、そのような対話型デバッガーがあります(実際、これは言語を回避することを決定する1つの方法です。実際のデバッガーのない開発言語には、依存関係管理のストーリーが不十分ななど、他の言語レベルの問題がある可能性があります)。一部の言語には、デバッガーを使用してリモートサーバーに接続できる標準プロトコルもあります。本番環境の問題をデバッグする必要があり、それを有効にできる場合は、非常に役立ちます。

多くの場合、デバッガーはIDEと統合されていますが、コマンドラインで実行できるものもあります。言語が何であれ、「<language>デバッガー」をグーグルで検索して、この貴重なリソースについて詳しく調べてください。

コメントを残す

メールアドレスが公開されることはありません。

Next Post

VS Code vs. Pycharm

火 11月 10 , 2020