[解決済み] なぜデバッグはIDEで行うのが良いのか?[クローズド]
質問
私は20年以上ソフトウェア開発者として、C、Perl、SQL、Java、PHP、JavaScript、そして最近ではPythonでプログラミングをしてきました。 私はこれまで、慎重に考え、適切に配置されたデバッグを行うことで、デバッグできない問題はありませんでした。
print
ステートメントを使用します。
私のやり方は原始的だ、IDEで本物のデバッガーを使ったほうがいい、と言う人が多いのは尊敬に値します。 しかし、私の観察によれば、IDEユーザーは、私が石刀や熊の皮を使って行うデバッグよりも速く、あるいはうまくデバッグしているようには見えません。 私は正しいツールを学ぶことに真摯に取り組んでいますが、ビジュアルデバッガを使うことの説得力のある利点を示されたことはありません。
さらに、ブレークポイントの設定や変数の表示といった基本的なこと以上に、IDEを使った効果的なデバッグ方法を紹介するチュートリアルや本を読んだことがありません。
何が足りないのだろう? IDE のデバッグツールは、診断ツールである「Diagnostic」(診断ツール)の思慮深い使用よりもずっと効果的なのはなぜでしょうか?
print
ステートメントを使用します。
IDEデバッグの細かいテクニックを紹介するリソース(チュートリアル、書籍、スクリーンキャスト)を紹介してください。
素晴らしい回答です。 皆さん、お時間をいただきありがとうございました。 とても勉強になりました。 私は多くに票を入れましたし、反対に一票も入れませんでした。
注目すべき点をいくつか。
- デバッガは、以下のようなことを助けてくれます。 アドホック 手動デバッグでは、アプリケーションを停止し、編集し、再実行する必要があります (再コンパイルが必要な場合もあります) が、変数、コード、その他実行環境のあらゆる側面について検査または変更を行うことができます。
- デバッガは実行中のプロセスにアタッチしたり、クラッシュダンプを使用したりできますが、手動デバッグでは、不具合を再現するための手順が必要です。
- デバッガは、複雑なデータ構造、マルチスレッド環境、ランタイムスタックを簡単に、かつ読みやすく表示することができます。
- デバッガは、ほとんどすべてのデバッグ作業を行うための時間と反復作業を削減するための多くの方法を提供します。
- ビジュアルデバッガとコンソールデバッガはどちらも便利であり、多くの共通した機能を持っています。
- IDEに統合されたビジュアルデバッガは、単一の統合開発環境(その名の由来)において、スマートエディットやIDEの他のすべての機能を便利に利用することも可能です。
どのように解決するのですか?
IDEデバッガがコード内のトレースメッセージに対して提供するいくつかの機能の例です。
- 表示する コールスタック を、任意の時点で、現在のスタックフレームのコンテキストを提供します。
- ライブラリに踏み込む トレースを追加する目的で再コンパイルできないもの (デバッグシンボルにアクセスできると仮定して)
- 変数の値を変更する プログラム実行中
- 編集と継続 - 以下の機能があります。 実行中にコードを変更する 変更した結果をすぐに確認できる
- できること 見る 変数が変化したときにそれを確認する
- できること コードのセクションをスキップしたり、繰り返したりする そのコードがどのように実行されるかを確認するためです。 これにより、理論的な変更を行う前にテストすることができます。
- 検討する メモリコンテンツ リアルタイムで
- ある特定の時に警告を発する 例外 が投げられた場合、たとえそれがアプリケーションによって処理されたとしても、です。
- 条件付きブレークポイント 例外的な状況でのみアプリケーションを停止し、スタックと変数を分析できるようにします。
- を表示します。 スレッドコンテキスト これはトレースでは困難です(異なるスレッドからのトレースが出力でインターリーブされるため)。
まとめると、print文は(一般的に)以下のようなものです。 静的 また、元のステートメントが十分に詳細でなかった場合、追加の情報を得るために再コンパイルする必要があります。 IDEはこの静的な障壁を取り払い、そのために ダイナミック ツールキットが手元にある。
私がコーディングを始めたばかりの頃、デバッガの何がすごいのか理解できず、トレースで何でも実現できると思っていました(もちろん、それはunix上で、デバッガはGDBでした)。 しかし、一度グラフィカルなデバッガの正しい使い方を覚えてしまうと、print文には戻りたくないと思うようになるのです。
関連
-
g++ エラー解析: '{' トークンの前にクラス名があることが予想されます。
-
[解決済み】KnockoutJSのテンプレートバインディングエラーをデバッグする方法は?
-
[解決済み] デバッガとはどのようなものですか?
-
[解決済み] クローム Uncaught SyntaxError: 予期しない入力の終了
-
[解決済み] Visual Studioデバッガ - 整数値を16進数で表示する
-
[解決済み] Google Apps Scriptのデバッグ方法(別名:Logger.logはどこに記録されるのか?)
-
[解決済み] なぜデバッグはIDEで行うのが良いのか?[クローズド]
-
[解決済み] MPIプログラムのデバッグはどのように行うのですか?
-
[解決済み] デバッグとリリースの性能比較
-
[解決済み] dSYMとは何か、どう使うか?(iOS SDK)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
g++ エラー解析: '{' トークンの前にクラス名があることが予想されます。
-
g++コンパイルエラー解析 "このスコープでは宣言されていません"
-
[解決済み] Chrome Developer Toolsでstatus=canceled for a resourceとはどういう意味ですか?
-
[解決済み] Chromeの開発ツールです。[VM] javascriptからファイル
-
[解決済み] Visual Studioデバッガ - 整数値を16進数で表示する
-
[解決済み] Vim起動時間のプロファイリング
-
[解決済み] gdbで複数のコマンドを何らかのデリミタ';'で区切る?
-
[解決済み] なぜデバッグはIDEで行うのが良いのか?[クローズド]
-
[解決済み] Android Studio IDE。例外発生時のブレーク
-
[解決済み] MPIプログラムのデバッグはどのように行うのですか?