第 10 章: C 言語でのデバッグ

        多くの友人は、C 言語のデバッグについて聞き始めたばかりです。彼らは、C 言語のデバッグとは何だろうと疑問を表します。コードを直接入力するだけではありません。その結果、多くの初心者は数え切れないほど多くのエラーを抱えています修正、削除、削除を開始するだけで、なんとか正常に動作します結局、何が悪いのか分かりませんでした。子どもたちのほうがクエスチョンマークが多いかなという感じはありますコードのデバッグがいかに重要であるかは想像できますが、実際の上司の場合、コードの入力が 20%、コードのデバッグが 80% です他のことについては話さず、今日のトピックである C 言語のデバッグに直接進みましょう

 

 1: バグ

 

 

      Mark II コンピューターで作業中にコンピューターが正常に動作しなくなり、ホープとチーム全員はその理由を理解できませんでした。その後、蛾が誤ってコンピューターに飛び込み、誤作動を引き起こしたことが判明した。ようやく問題が解決したホープは、その出来事を日記に記録しました。

2: デバッグの重要性

 ① デバッグ手順

1. プログラムエラーの存在を見つける

2. 切り分け、除去などによりエラーを特定します。
3. エラーの原因を特定します。
4. エラーを修正するための解決策を提案します
。 5. プログラム エラーを修正し、再テストします。

②デバッグとリリースの紹介

デバッグは通常デバッグ バージョンと呼ばれ、デバッグ情報が含まれ、最適化は行われないため、プログラマーがプログラムをデバッグするのに便利です。
リリースはリリースバージョンと呼ばれ、ユーザーが使いやすいようにプログラムのコードサイズや実行速度が最適化されることが多いです。

3: Windows 環境のデバッグの概要

① デバッグの準備(デバッグ環境でのみデバッグ可能)

 ②ショートカットキーを覚える

• F5: デバッグを開始します。多くの場合、次のブレークポイントに直接ジャンプするために使用されます。(ループ内の論理ブレークポイントにジャンプします)

• F9: ブレークポイントを作成し、ブレークポイントをキャンセルします。

      ブレークポイントの重要な役割は、プログラムのどこにでも設定できます。

      このようにして、プログラムを任意の位置で停止し、ステップごとに実行できます。

• F10: プロセスごと。通常はプロセスを処理するために使用されます。プロセスは関数呼び出しまたはステートメントにすることができます。

• F11: ステートメントごと、つまり毎回ステートメントを実行しますが、このショートカット キーを使用して実行ロジックを作成できます。

      関数内にステップします (これが最も一般的に使用されます)。

• CTRL+F5: デバッグせずに実行を開始します。

③デバッグ中にプログラムの現在の情報を確認する

1. 一時変数の値を表示する

2. メモリ情報の表示 

 3. コールスタックを表示する

 4: プログラミングにおけるよくある間違い

1 コンパイルエラー
2 リンクエラー(解析できない外部コマンド)
3 実行時エラー 論理的な動作に問題がある

5: 関連コードを使用してバグを減らす

1. const キーワード (const の機能により、データの不注意による変更によるプログラミング エラーを回避できます。)

2. ポインタ変数を変更する const の役割

 3. 例(シミュレーション実装ライブラリ関数:strcpy)

//模拟实现库函数:strcpy
#include<stdio.h>
#include<assert.h>

char* my_strcpy(char* dest, const char * src)
{
	char* ret = dest;
	assert(dest != NULL);//断言防止空指针
	assert( src != NULL);//断言防止空指针
	//1.第一种写法
	//while (*dest++ = *src++) 
	//	;
	//2.第二种写法
	while (*src != '\0')
	{
		*dest = *src;
		dest++;
		src++;
	}
	*dest = *src;// \0 的拷贝
	return ret;
}


int main()
{
	//初始化
	char arr1[] = "hello bit"; 
	char arr2[20] = "xxxxxxxxxxxxx";
	char* p = NULL;
	//调用函数
	my_strcpy(arr2, arr1);
	//打印arr2
	printf("%s\n", my_strcpy(arr2, arr1));
	return 0;
}

        気づいたら最後まで来てしまいました。これで第10章の知識は終わりです。初心者なのでうまく書けていないかもしれません。間違っていたらご指摘ください。
 

おすすめ

転載: blog.csdn.net/AAlykk/article/details/130800835