你初學程式設計的時候是怎麼提高自己的Debug能力的?

時間 2021-05-10 20:49:43

1樓:TroubleShooter

不斷地看編譯器的英文報錯資訊。學著理解它為什麼這麼報錯。

我發現身邊很多搞計算機的小夥伴,因為英語不好的緣故,很少看這類資訊的。其實這是非常不好的習慣。

2樓:東東哥

1、幫學妹/學姐debug

2、幫漂亮的學妹/學姐debug

3、幫漂亮且單身的學妹/學姐debug

學妹/學姐才是提公升功力的核心奧義

4、不建議幫有男朋友的學妹/學姐debug

3樓:

有的程式設計師基本不考慮如何寫出沒bug的程式,出了bug就除錯,天長日久除錯bug的能力就很強。尤其是可以高效的除錯別人寫出的bug,感覺很厲害。另外一類程式設計師很討厭除錯bug,用了很多精力來保證不寫出有bug的程式,調bug也是偶爾為之,這類程式設計師除錯別人的程式特別痛苦,基本就想重構了。

4樓:木字李

首先要清楚什麼是Bug及它的分類。

Bug 就是編寫程式的執行及編輯時發生的一些問題。

Bug 的分類:

編譯時錯誤

執行錯誤

當然它Bug的分類根據程式語言的型別不同而變。

理解上面這幾點後,直接就是多練

5樓:島城

每乙個Function 都寫乙個最直白的對數器。

以乙個快速排序為例

自己寫乙個實現①

然後系統自帶的實現②

① vs ② 如果你實現的邏輯和結果是對的。那麼每一步對比輸出,一定是對的。

然後瘋狂壓測N次。如果你自己實現的有誤,一定會被DeBug出血了。

錯了就打斷點,然後打斷點,然後打斷點...

//實現三個快排,然後系統自帶的Arrays.sort//主要debug時,看main方法裡的思路。

public

class

PartitionAndQuickSortpublic

static

intpartition

(int

arr,

intL

,intR)

if(L==

R)intlessEqual=L

-1;int

index=L

;while

(index

++;}

swap

(arr,++

lessEqual,R

);return

lessEqual;}

// arr[L...R] 玩荷蘭國旗問題的劃分,以arr[R]做劃分值

// arr[R]

public

staticint

netherlandsFlag

(int

arr,

intL

,intR)

;}if(

L==R)

;}intless=L

-1;// < 區右邊界

intmore=R

;// > 區左邊界

intindex=L

;while

(index

)elseif(

arr[

index

]

else

}swap

(arr

,more,R

);return

newint

;}public

static

void

quickSort1

(int

arr)

process1

(arr,0

,arr

.length-1

);}public

static

void

process1

(int

arr,

intL

,intR)

// L..R partition arr[R] [ <=arr[R] arr[R] >arr[R] ]

intM

=partition

(arr,L

,R);process1

(arr,L

,M-1

);process1

(arr,M

+1,R

);}public

static

void

quickSort2

(int

arr)

process2

(arr,0

,arr

.length-1

);}public

static

void

process2

(int

arr,

intL

,intR)

intequalArea

=netherlandsFlag

(arr,L

,R);process2

(arr,L

,equalArea[0

]-1);

process2

(arr

,equalArea[1

]+1,

R);}public

static

void

quickSort3

(int

arr)

process3

(arr,0

,arr

.length-1

);}public

static

void

process3

(int

arr,

intL

,intR)

swap

(arr,L

+(int)

(Math

.random()*

(R-L

+1)),R

);int

equalArea

=netherlandsFlag

(arr,L

,R);process3

(arr,L

,equalArea[0

]-1);

process3

(arr

,equalArea[1

]+1,

R);}// for test

public

staticint

generateRandomArray

(int

maxSize

,int

maxValue

)return

arr;

}// for test

public

staticint

copyArray

(int

arr)int

res=

newint

[arr

.length

];for

(inti=

0;i<

arr.

length;i

++)return

res;

}// for test

public

static

boolean

isEqual

(int

arr1

,int

arr2)if

(arr1

==null

&&arr2

==null)if

(arr1

.length

!=arr2

.length

)for

(inti=

0;i<

arr1

.length;i

++)}

return

true;}

// for test

public

static

void

printArray

(int

arr)

for(

inti=0

;i

length;i

++)System

.out

.println

();}

// for test

public

static

void

main

(String

args)}

System

.out

.println

(succeed

?"Nice!"

:"Oops!");}}

6樓:

空談誤國,實幹興邦。

debug技術和程式設計技術一樣,是一門依靠實踐來提公升能力的技術。

所以,你需要的是多寫,多練,多debug。 寫得多了,自然bug遇到的多,然後debug多,然後能力就見長了。

題外話,我們需要提高的不是debug能力,而是少寫出bug的能力吧。

7樓:

那會還在上大學,用大學機房的電腦做除錯。除了和計算機相關的課程是免費上機之外,其他時間上機要自己付錢。大學裡有兩個機房,乙個在計算機系,電腦配置好,另乙個在本系,電腦配置很差。

差到什麼程度呢,沒有硬碟。你要上機得自己帶一張DOS啟動軟盤,然後跑軟體換另一張軟盤。軟盤有兩種規格:

一種3.5寸,另一種5.2寸。

3.5寸軟盤

為什麼硬碟是從C盤開始?那是因為A盤和B盤是被3.5寸軟盤和5.2寸軟盤占用了。當然,現在別說軟碟機了,連光碟機都少見了。

當時計算機系的機房一小時2元,本系的機房一小時1元。二十多年前的2元還是挺貴的,於是我就上一小時1元的,自己帶兩張軟盤,一張用來啟動DOS,還有一些常用小工具,另一張裝程式設計開發相關的軟體,比如編譯器,還有幾個小遊戲。

平時沒電腦用,就把程式寫在紙上,再到機房把程式錄入電腦。為保證盡可能的一次跑成功,我會預先對紙上的程式做腦內模擬執行。畢竟現場除錯非常耗時間,所有上機的錢,都是我從捉襟見肘的伙食費裡摳出來的。

我對寫在紙上的每一條語句都爛熟,對每一條語句執行的結果都了然於胸。久而久之,Debug能力就提高了。

無他,唯專心爾。

8樓:艾斯尼勒

重中之重:學會看錯誤提示。

之後就可以循序漸進乃至水到渠成。

當然,最高贊的幫別人debug可以快速積攢debug的經驗技巧,是快速提高debug能力的快捷途徑

9樓:

看起來都是說的自測的時候的bug呢?測試環境加列印不好嗎

那些說寫的bug多了,debug能力就強了,還真不一定

其實比較頭疼的bug是線上的業務掛了,多執行緒競爭,踩記憶體,死鎖,記憶體洩漏,說不定還會遇到機器記憶體壞了,cpu壞了也有可能。

10樓:阿黎Darkery

去實習去工作,去不同的專案,各式各樣的問題層出不窮,最重要的還是量的積累,會引起質變

還有一點,每次當你遇到問題,無論什麼專案什麼語言,把那句error code敲到google上或者stachoverflow上,好好閱讀top分析和解決方案,受益匪淺。

如何使用自己的程式設計能力提高生活質量?

在伯大念書,有門學科叫多學科系統以及軟體工程 MSSE 課上講了點python又自學了點python,第一學期結束的時候要求自主設計乙個智慧型家居,我想了想作為中中國人得推廣咱國內的牌子啊,就挑了小公尺的加濕器 同學們有選恆溫器,感光窗簾等等五花八門 現在已經用python編了一套程式,雖然感測器部...

軟體學院的學生該怎樣提高自己的程式設計能力?

冷寒蕭 我覺得題主應該要問怎麼提高自己的軟體開發能力。個人認為軟體開發能力和程式設計能力還是有點點區別的,乙個是巨集觀上的,乙個相對是微觀上的,軟體開發需要對整體的乙個規劃,模組的劃分等。 我暫時把程式設計分為兩大板塊,乙個是知識,乙個是技術。二者有比較大的區別。首先說知識,什麼是知識?就是你學校學...

明星是怎麼提高自己的演技的?

張燁 我覺得閱歷經歷的多才能演出好的作品。乙個演員如果當做賺錢很有優越感那麼他的演技可想而知。就像小鮮肉。而為什麼許多老藝術家香港明星演技高,因為他們就在演生活,放下演員明星的架子。扎扎實實的去做去演戲! 霧靄 明星不一定就是演員,有的明星根本沒有演技。演員的演技怎麼提高的?一說演員就說科班的有實力...