目錄
1 -> 什么是bug?
2 -> 調(diào)試是什么?有多重要?
2.1 -> 調(diào)試是什么?
2.2 -> 調(diào)試的基本步驟
2.3 -> Debug和Release的介紹
3 -> Windows環(huán)境調(diào)試介紹
3.1 -> 調(diào)試環(huán)境的準備
3.2 -> 學會快捷鍵
3.3 -> 調(diào)試的時候查看程序當前信息
3.3.1 -> 查看臨時變量的值
3.3.2 -> 查看內(nèi)存信息
3.3.3 -> 查看調(diào)用堆棧
3.3.4 -> 查看匯編信息
3.3.5 -> 查看寄存器信息
4 -> 如何寫出好(易于調(diào)試)的代碼
4.1 -> 優(yōu)秀的代碼
5 -> 編程常見的錯誤
5.1 -> 編譯型錯誤
5.2 -> 鏈接型錯誤
5.3 -> 運行時錯誤
1 -> 什么是bug?
第一次被發(fā)現(xiàn)的導致計算機錯誤的飛蛾,也是第一個計算機程序錯誤。
2 -> 調(diào)試是什么?有多重要?
所有發(fā)生的事情都一定有跡可循,如果問心無愧,就不需要遮蓋也就沒有跡象了,如果問心有愧,就必然需要遮蓋,那就一定有跡象,跡象越多就越容易順藤而上,這就是推理的途徑。
順著這條途徑順流而下就是犯罪,逆流而上,就是真相。
2.1 -> 調(diào)試是什么?
調(diào)試(Debugging / Debug),又稱除錯,是發(fā)現(xiàn)和減少計算機程序或電子儀器設備中程序錯誤的一個過程。
2.2 -> 調(diào)試的基本步驟
-
發(fā)現(xiàn)程序錯誤的存在
-
以隔離、消除等方式對錯誤進行定位
- 確定錯誤產(chǎn)生的原因
- 提出糾正錯誤的解決方法
- 對程序錯誤予以改正,重新測試
2.3 -> Debug和Release的介紹
Debug通常稱為調(diào)試版本,它包含調(diào)試信息,并且不作任何優(yōu)化,便于程序員調(diào)試程序。
Release稱為發(fā)布版本,它往往是進行各種優(yōu)化,使得程序在代碼大小和運行速度上都是最優(yōu)的,以便用戶很好地使用。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
char* p = "hello world";
printf("%s\n", p);
return 0;
}
Debug環(huán)境的結(jié)果展示:?
Release環(huán)境的結(jié)果展示:
所以我們說調(diào)試就是在Debug版本的環(huán)境中,找代碼中潛伏的問題的一個過程。
看如下代碼:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int i = 0;
int arr[10] = { 0 };
for (i = 0; i <= 12; i++)
{
arr[i] = 0;
printf("haha\n");
}
return 0;
}
如果是Debug模式去編譯,程序的結(jié)果是死循環(huán)。
如果是Release模式去編譯,程序沒有死循環(huán)。
3 -> Windows環(huán)境調(diào)試介紹
3.1 -> 調(diào)試環(huán)境的準備
環(huán)境中選擇Debug選項,才能使代碼正常調(diào)試。
3.2 -> 學會快捷鍵
最常使用的快捷鍵:
F5啟動調(diào)試,經(jīng)常用來直接跳到下一個斷點處。F9創(chuàng)建斷點和取消斷點斷點的重要作用,可以在程序的任意位置設置斷點。這樣就可以使得程序在想要的位置隨意停止執(zhí)行,繼而一步步執(zhí)行下去。F10逐過程,通常用來處理一個過程,一個過程可以是一次函數(shù)調(diào)用,或者是一條語句。F11逐語句,就是每次都執(zhí)行一條語句,但是這個快捷鍵可以使我們的執(zhí)行邏輯進入函數(shù)內(nèi)部(這是最常用的)。Ctrl?+ F5開始執(zhí)行不調(diào)試,如果你想讓程序直接運行起來而不調(diào)試就可以直接使用。
3.3 -> 調(diào)試的時候查看程序當前信息
3.3.1 -> 查看臨時變量的值
3.3.2 -> 查看內(nèi)存信息
3.3.3 -> 查看調(diào)用堆棧
通過調(diào)用堆棧,可以清晰的反映函數(shù)的調(diào)用關系以及當前調(diào)用所處的位置。
3.3.4 -> 查看匯編信息
3.3.5 -> 查看寄存器信息
4 -> 如何寫出好(易于調(diào)試)的代碼
4.1 -> 優(yōu)秀的代碼
- 代碼運行正常
- bug很少
- 效率高
- 可讀性高
- 可維護性高
- 注釋清晰
- 文檔齊全
常見的coding技巧:
- 使用assert
- 盡量使用const
- 養(yǎng)成良好的編碼風格
- 添加必要的注釋
- 避免編碼的陷阱
5 -> 編程常見的錯誤
5.1 -> 編譯型錯誤
直接看錯誤提示信息(雙擊),解決問題?;蛘邞{借經(jīng)驗就可以搞定。
5.2 -> 鏈接型錯誤
5.3 -> 運行時錯誤
借助調(diào)試,逐步定位問題。
感謝各位大佬支持?。?!文章來源:http://www.zghlxwxcb.cn/news/detail-848451.html
互三啦?。。?/strong>文章來源地址http://www.zghlxwxcb.cn/news/detail-848451.html
到了這里,關于【C++航海王:追尋羅杰的編程之路】探尋實用的調(diào)試技巧的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!