また、最近の強力な IDE とリモート デバッグでは、それほど多くのログが本当に必要なのでしょうか?
はい、もちろんです。多くの熟練していない開発者が犯す間違いは、間違った方法でバグを修正しようとすることです。通常、デバッグする必要があるときにログを記録する傾向があります。それぞれに場所がありますが、ほぼ常にロギングが必要になる領域が少なくともいくつかあります。
- デバッガーで一時停止すると計算結果に影響するリアルタイム コードの問題を調べる場合 (確かに、ログ記録はこのようなリアルタイム プロセスのタイミングにわずかな影響を与えますが、その程度はソフトウェアに大きく依存します)
- デバッガーにアクセスできない可能性があるベータ テスターまたは他の同僚に送信されるビルドの場合
- デバッガー内で簡単に表示できないデータをディスクにダンプする場合。たとえば、STL 構造を正しく解析できない特定の IDE です。
- プログラムの通常の流れを「感じる」ため
- コメントに加えてコードを読みやすくするために、次のようにします。
// データファイルを開く
fp = fopen("data.bin", "rb");
上記のコメントは、ロギング呼び出しに簡単に配置できます。
const char *kDataFile = "data.bin";
log("データ ファイル %s を開いています", kDataFile);
fp = fopen(kDataFile, "rb");
そうは言っても、あなたはいくつかの点で正しいです。ロギング メカニズムを美化されたスタック トレース ロガーとして使用すると、非常に質の悪いログ ファイルが生成されます。したがって、ここで重要なのは明らかに、呼び出しのログを正しく慎重に使用することです。これは開発者の裁量にかかっていると思います。基本的に自分でログファイルを作成していることを考慮する必要があります。ユーザーはそれらを気にせず、通常はとにかくコンテンツをひどく誤解しますが、少なくともプログラムが誤動作した理由を判断するためにそれらを使用できます.
また、ログファイルが特定のバグの直接の原因を示していることはほとんどありません。私の経験では、通常、バグを再現する方法についてある程度の洞察が得られ、それを再現またはデバッグするプロセスによって、問題の原因を見つけることができます。