作者前言
?
??? ? ? ? ??????????????????????
? ??? ? ? ?作者介紹:? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ????
? ? ? ??? ??????????????? ? ? ? ? ? ? ??
? ? ? ? ? ??作者id:老秦包你會,? ? ? ? ???
簡單介紹:??????????????????????????????
? ? ? ? ? ? ?喜歡學(xué)習(xí)C語言和python等編程語言,是一位愛分享的博主,有興趣的小可愛可以來互討? ? ? ? ?????????????????
? ? ? ? ? ? ? ? ???個(gè)人主頁::小小頁面??
? ? ? ? ? ? ? ? ? ??gitee頁面:秦大大??
???????????????????????????????????
? ? ? ? ??? 一個(gè)愛分享的小博主 歡迎小可愛們前來借鑒??_______________________________________________________
______________________________________________________________________
目錄
實(shí)用調(diào)試技巧
????????什么是bug?
????????調(diào)試是什么?有多重要?
????????debug和release的介紹。
????????windows環(huán)境調(diào)試介紹。
????????如何寫出好(易于調(diào)試)的代碼。
????????編程常見的錯(cuò)誤。
-——————————————————————————————————
什么是bug?
計(jì)算機(jī)硬件或者軟件的錯(cuò)誤
調(diào)試是什么?有多重要?
調(diào)試的基本步驟
Debug和Release的介紹。
?Debug:


?可以看到兩者區(qū)別,這里簡單的介紹一下這兩個(gè)
Windows環(huán)境調(diào)試介紹

?斷點(diǎn)一般配合f5進(jìn)行運(yùn)行,跳到下一次斷點(diǎn)(邏輯斷點(diǎn)),
調(diào)試的時(shí)候查看程序當(dāng)前信息

?上圖是要調(diào)試之后才能查看

調(diào)用堆棧?
反應(yīng)的是函數(shù)的調(diào)用邏輯,像棧一樣后進(jìn)先出,反應(yīng)函數(shù)調(diào)用的順序
地址的使用
1.棧區(qū)上內(nèi)存使用的習(xí)慣是:從高地址向低地址使用(先使用高地址再使用低地址)
2.數(shù)組隨著下標(biāo)的增長,地址是由低到高變化的
如何寫出好(易于調(diào)試)的代碼
優(yōu)秀的代碼
#include<stdio.h>
#include<string.h>
#include<assert.h>
void copy(char arr1[], char arr2[], int sz)
{
if (arr1 != NULL || arr2 != NULL)
{
return;
}
int i = 0;
for (i = 0; i < sz; i++)
{
arr1[i] = arr2[i];
}
}
void copy2(char arr1[], char arr2[])
{
assert(arr1 != NULL);
assert(arr2 != NULL);
int i = 0;
int j = 0;
while (arr1[i++] = arr2[j++])
{
;
}
}
int main()
{
char arr1[] = "123456789";
char arr2[] = "abcdefg";
//strcpy(arr1, arr2);
int sz = sizeof arr2 / sizeof(char);
//copy(arr1, arr2, sz);
copy2(NULL, arr2);
printf("%s", arr1);
return 0;
}
這里使用了assert.h頭文件中的assert(表達(dá)式),表達(dá)式為假就會報(bào)錯(cuò)
計(jì)算表達(dá)式,當(dāng)結(jié)果為FALSE時(shí),打印診斷消息并中止程序。
const修飾變量的時(shí)候,是在語法層面限制了變量修改,但本質(zhì)上變量不是常量,是一種不能修改的變量,但是有一種情況,就是通過指針修改
#include<stdio.h>
int main()
{
const int num = 120;
int* p = #
*p = 10;
printf("%d", num);
return 0;
}
本來const修飾指針變量,使變量不能修改,但是通過指針就能修改,這個(gè)不符合我們的預(yù)想的
如果const修飾指針變量的就會有兩種寫法
1. const 放在* 左邊
int const* ?p = # 這種寫法也可以
?可以看出當(dāng)const放在*前面修飾。修飾的是*p,使*p不能修改
2. const 放在* 右邊
?可以看出當(dāng)const 放在* 的后面限制的是p,使p不能修改
編程常見的錯(cuò)誤
編譯型錯(cuò)誤
直接看錯(cuò)誤提示信息(雙擊),解決問題?;蛘邞{借經(jīng)驗(yàn)就可以搞定。相對來說簡單。 文章來源:http://www.zghlxwxcb.cn/news/detail-640929.html
鏈接型錯(cuò)誤
運(yùn)行時(shí)錯(cuò)誤
?借助調(diào)試,逐步定位問題。最難搞文章來源地址http://www.zghlxwxcb.cn/news/detail-640929.html

到了這里,關(guān)于C語言技巧 ----------調(diào)試----------程序員必備技能的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!