成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

【C語言基礎】實用調(diào)試技巧

lsxiao / 3775人閱讀

摘要:調(diào)試的基本步驟發(fā)現(xiàn)程序錯誤的存在以隔離消除等方式對錯誤進行定位確定錯誤產(chǎn)生的原因提出糾正錯誤的解決辦法對程序錯誤予以改正重新測試和版本的介紹通常稱為調(diào)試版本,它包含調(diào)試信息,并且不做任何優(yōu)化,以便于程序員調(diào)試。

在我們編寫代碼的時候難免會遇到很多問題,我們光靠眼睛是很難看出來哪里出問題了,這時我們往往需要動手一步一步的運行程序找出問題的所在,這個過程就是調(diào)試的過程。在IT界流傳著這么一句話“一名優(yōu)秀的程序員也是一名優(yōu)秀的偵探”所以當我們遇到問題時,還是要多動手,嘗試調(diào)試,才能有進步。希望大家多多給予支持,贈人玫瑰,手有余香!

一:什么是Bug?

現(xiàn)在提起bug,大都想到的是「程序錯誤、漏洞」,其實bug的原意為「昆蟲」
為什么變成這樣呢? 因為世界上第一個程序錯誤就是由一只昆蟲所造成的

1947年9月9日,葛麗絲·霍普(Grace Hopper)發(fā)現(xiàn)了第一個電腦上的bug。當在Mark II計算機上工作時,整個團隊都搞不清楚為什么電腦不能正常運作了。經(jīng)過大家的深度挖掘,發(fā)現(xiàn)原來是一只飛蛾意外飛入了一臺電腦內(nèi)部而引起的故障(如圖所示)。這個團隊把錯誤解除了,并在日記本中記錄下了這一事件。也因此,人們逐漸開始用“Bug”(原意為“蟲子”)來稱呼計算機中的隱錯。 —— 維基百科

二:什么是調(diào)試

所謂調(diào)試(Debug),就是讓代碼一步一步慢慢執(zhí)行,跟蹤程序的運行過程。 比如,可以讓程序停在某個地方,查看當前所有變量的值,或者內(nèi)存中的數(shù)據(jù);也可以讓程序一次只執(zhí)行一條或者幾條語句,看看程序到底執(zhí)行了哪些代碼。

2.1:調(diào)試的基本步驟

  • 發(fā)現(xiàn)程序錯誤的存在
  • 以隔離、消除等方式對錯誤進行定位
  • 確定錯誤產(chǎn)生的原因
  • 提出糾正錯誤的解決辦法
  • 對程序錯誤予以改正、重新測試

2.2:Debug和release版本的介紹

Debug通常稱為調(diào)試版本,它包含調(diào)試信息,并且不做任何優(yōu)化,以便于程序員調(diào)試。

Release稱為發(fā)布版本,它往往是進行了各種優(yōu)化,使得程序在代碼的大小和運行速度上都是最優(yōu)的,以便用戶更好的使用。


可以看出在文件大小上有了明顯的差異。

下面,我們用一個代碼示例來說明Release相對于Debug版本發(fā)生了優(yōu)化。
代碼示例:

int main(){	int i = 0;	int arr[10] = {1,2,3,4,5,6,7,8,9,10};	for (i = 0; i <= 12; i++)	{		arr[i] = 0;		printf("hehe/n");	}	return 0;}

上述代碼在Debug版本中運行時導致了死循環(huán),而在Release版本編譯時,程序沒有死循環(huán)。這之中的區(qū)別就是因為優(yōu)化問題而出現(xiàn)的。
這是因為在一些編譯器中,在棧中儲存如果i和arr之間的空間適合的話,就有可能使用的arr數(shù)組向后越界就訪問到了i,造成循環(huán)變量i的改變,最終死循環(huán)。

注:
i和arr是局部變量
局部變量是放在棧區(qū)上的
棧區(qū)上內(nèi)存的使用習慣是:先使用高地址處的空間,再使用低地址處的空間。
數(shù)組隨著下標的增長,地址是由低到高變化。

三:Windows調(diào)試環(huán)境介紹

3.1:調(diào)試環(huán)境的準備

注:Debug可以調(diào)試,Release不可以調(diào)試。

在環(huán)境中選擇Debug選項,才可以正常調(diào)試。

3.2:快捷鍵的使用

我們介紹幾個最常用的快捷鍵:
F9:設置斷點或取消斷點,可以在任意位置設置,這樣可以使得程序在想要的位置停下來。
F5:啟動調(diào)試,往往與F9設置斷點配合使用,使開始調(diào)試就跳到斷點處。
F10:逐過程調(diào)試,一個過程可以是一條語句,也可以是一個函數(shù)。遇到函數(shù)不進入函數(shù)內(nèi)部。
F11:逐語句調(diào)試,每次執(zhí)行一條語句,可以使執(zhí)行邏輯進入函數(shù)內(nèi)部。shift+F11跳出函數(shù)。
CTRL + F5:開始執(zhí)行不調(diào)試。

設置斷點+F5 再F10或者F11(進入函數(shù)內(nèi)部) shift+f11 退出函數(shù)

3.3:調(diào)試查看當前程序信息

3.3.1:查看臨時變量的值

在調(diào)試開始之后,用于觀察各個變量值的變化;

3.3.2:查看內(nèi)存信息

在調(diào)試開始之后,用于觀察內(nèi)存信息;

3.3.3:查看寄存器信息

3.3.3:查看調(diào)用堆棧

通過查看調(diào)用堆棧,我們可以看出函數(shù)的調(diào)用關系以及當前調(diào)用所處的位置;

四:調(diào)試實例

下面我們給出一個簡單的調(diào)試實例,讓大家可以切身體會一下調(diào)試的過程,朋友們可以動手試一試。

int main(){	int n = 0, sum = 0;	int ret = 1;	scanf("%d", &n);	for (int i = 1; i <= n; i++)	{		for (int j = 1; j <= i; j++)		{			ret *= j;		}		sum += ret;	}	printf("%d/n", sum);	return 0;}

如果我們輸入3,正確答案應該是9,而程序運行相互來確實15,這時我們可以通過調(diào)試找出問題的所在。

五:如何寫出好的代碼

5.1:什么是優(yōu)秀的代碼

  • 代碼運行正常;
  • Bug很少;
  • 效率高;
  • 可讀性高
  • 可維護性高;
  • 注釋清晰;
  • 文檔齊全;

5.2:常用的Coding技巧

  • 使用assert();
  • 合理使用const;
  • 養(yǎng)成良好的編碼習慣;
  • 添加必要的注釋;

OK!!!觀眾老爺們,這里只是介紹了簡單的調(diào)試技巧,如果朋友們覺得有一點點作用的話,希望朋友們能夠給予小菜鳥一點支持!后續(xù)繼續(xù)給朋友們帶來更好的博文,還希望朋友們能夠繼續(xù)關注,小菜鳥致力于把自己的學習經(jīng)驗與個人理解更多的分享給大家,望大家喜歡與指正。

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://m.hztianpu.com/yun/124505.html

相關文章

  • ES6的7個實用技巧

    摘要:交換元素利用數(shù)組解構來實現(xiàn)值的互換調(diào)試我們經(jīng)常使用來進行調(diào)試,試試也無妨。提供了完整的環(huán)境,并且支持自定義域名指向,動態(tài)計算資源調(diào)整,可以完成各種應用的開發(fā)編譯與部署。 7 Hacks for ES6 Developers Hack #1 交換元素 利用數(shù)組解構來實現(xiàn)值的互換 let a = world, b = hello [a, b] = [b, a] console.log(a...

    CastlePeaK 評論0 收藏0
  • 實用Javascript調(diào)試技巧分享

    摘要:見過太多同學調(diào)試只會用簡單的甚至,看著真為他們捉雞。。下面我就分享一些實用且聰明的調(diào)試技巧,希望能讓大家調(diào)試自己代碼的時候更加從容自信。其實提供了文件的搜索功能,只不過大部分時候我們給忽略了。。 見過太多同學調(diào)試Javascript只會用簡單的console.log甚至alert,看著真為他們捉雞。。因為大多數(shù)同學追求優(yōu)雅而高效地寫代碼,卻忽略了如何優(yōu)雅而高效地調(diào)試代碼,不得不說是有點...

    jk_v1 評論0 收藏0
  • IntelliJ IDEA 超實用使用技巧分享

    摘要:超實用使用技巧分享長篇前言工欲善其事必先利其器最近受部門的邀請,給入職新人統(tǒng)一培訓,發(fā)現(xiàn)有很多新人雖然日常開發(fā)使用的是,但是還是很多好用的技巧沒有用到,只是用到一些基本的功能,蠻浪費這個優(yōu)秀的。 IDEA 超實用使用技巧分享(長篇) showImg(https://segmentfault.com/img/remote/1460000019977268?w=1280&h=800); 前...

    fevin 評論0 收藏0
  • 實用瀏覽器調(diào)試技巧(動畫、節(jié)點刪除、節(jié)點增加)

    摘要:今天分享一些平時不常用,但總有一天你會用到的瀏覽器調(diào)試技巧。如圖彩蛋介紹一個在瀏覽器中全局搜索代碼的方法,點擊面板,會看到左側有目錄結構,右鍵目錄結構。如圖小擴展還有一個場景一個頁面會從后臺請求字體包,字體包會在某個時刻通過加入到標簽中。 今天分享一些平時不常用,但總有一天你會用到的瀏覽器調(diào)試技巧。先來看一個H5頁面,下面是地址http://liticool.info/wsvist/i...

    honmaple 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<