はじめに
特定のコードをデバッグしているときに、世界に幽霊がいるように感じたことはありますか?
API をデバッグするときに、サードパーティのインターフェイスや間違ったドキュメントの呼び出しに問題があると感じたことはありますか?
バグをデバッグしていて、問題の原因は間違った使用方法にあると常に感じたことはありますか?
サービスをインストールするときに、ドキュメントや環境が要件と一致しないと感じたことはありますか?
プロセスと方法を信じ、結果に惑わされないでください....
概要
コードのデバッグは事件の捜査とよく似ていますが、警察が人々の安定のために事件を捜査するのに対し、私たちはシステムの安定のためにデバッグを行います。この場合、不当な罰を受けないように、コードやプログラムの一部を不当に非難すべきではありません。
以下のプロセス方法の一部は個人的な観点からのものであり、これまでの方法のいくつかは、もちろん、より理論的なものですが、個人的な方法としてはそうかもしれません。私のようなDSにもっと適しています。
試験方法
コードの手続き型デバッグ方法
コードをデバッグするときに最初に注意すべきことは、最終的な結果に至るまでの過程、つまり犯罪を実行する過程を明確にする必要があります。そのステップから犯罪の結果を得ることができます。 -犯罪を犯す過程を段階的に追跡します。犯罪プロセスの分析中、すべての疑わしい点 (つまり、コードに記載されているログ情報) をマークする必要があります。このような分析プロセスの後、ブラック ボックス テストが実行され、入力が追加され、結果が検証されます。最後に、各ステップのマークに基づいて判断を検証し、理由を見つけます。
上記の解決策は手続き型の調整方法です。この方法の利点は、テストを通じてプロセス全体を直接分析できることは自明です。ただし、この方法では、自分のコードのロジックを明確にするのは問題ありませんが、他の人のロジックを明確にする必要があります。空に到達するのは難しいです。
単体テストのデバッグ方法
単体テストの基本的な目的は、異常な状況のテストと検証を含め、特定の関数、クラス、または機能モジュールの正常な動作を保証することです。プログラマとしてよく使う検証方法は「積み上げ」です (積み上げとは、偽のデフォルト データを提供することを意味します)。この方法は調整するのに非常に便利ですが、欠点の 1 つは、正常であることを確認した後は再度使用できないことです。多くの開発者がコメントしたり削除したりするので、開発環境で開発を完了したが、それをテスト環境で検証したい場合は、積み上げロジックを書き直す必要があります。ライブネットワークに接続すると、さらに面倒になります。非常に不便ですので、以下をお試しください。
単体テスト クラスを追加します。このクラスは、バックグラウンド ログインまたはコマンド ラインを通じてのみ実行できます。このクラスの機能は、システムの主要なロジックを検出し、対応するテスト出力結果を作成することです。 。すべてのインターフェイス クラスは単体テスト クラスを通じてテストできると信じなければなりません。プログラマーは何度も「これをすべきか?」と疑問を抱きます。実際、私たちはそれを本当に行う必要があります。結局のところ、多くのテストはブラックボックステストとして行われています。
このデバッグ方法は開発プロセスに適しており、現在のネットワーク コードがリリース後に正常に実行されることを確認できます。皆さんも開発期間を計画する際に、このプロセスを開発段階に組み込んでいただければ幸いです。
クイック位置決め方法
最初の 2 つの複雑なプロセスは理想主義的すぎますか?私のコードはわずか 100 行で、システムは複雑ではありません。この場合は、すぐに位置解析を実行してください。
によく遭遇します1. 入力は正常ですが、出力は異常です。
2. 入力は正常、ロジックは異常、出力は異常です。3. 入力は異常、ロジックは正常、出力は正常です。
4. 入力が異常、ロジックが異常、出力がありません。私の個人的な開発プロセスでは、上記のような問題によく遭遇します。たとえば、Node.js の開発中に、string に length メソッドがないという string.length プロンプトが表示されます。当時、私は混乱して、なぜ他の文字列には length メソッドがあるのに、なぜこの文字列には length メソッドがないのかと自問しました。多くの学生は、この文字列がまったく文字列ではないことが問題であることを知っているはずです。これは、単にそれを文字列に理想化しただけであり、入力した内容に何か問題があることを意味します。したがって、この問題を特定する最良の方法は、入力と出力を出力することです。
他のプログラムはそれほど単純ではないかもしれませんが、最も基本的なことは、main 関数で例外が発生した関数の入力と出力を判断して、それらを素早く見つけることができるようにすることです。
覚えておいてください: 引用を文脈から切り離して考えないでください。
上記のメソッドとプロセスは、PHP または Node.js に基づいてのみまとめられています。C と C では類似点や相違点がある可能性があります。気に入らない場合はスプレーせず、ただ眺めて大切にしてください。