軟件調(diào)試和硬件調(diào)試都是調(diào)試,思路差不多,一些具體操作方式上有所差別。這是我在工作中總結(jié)的一些認(rèn)識(shí):
1.調(diào)試總的指導(dǎo)思想是,任何一個(gè)實(shí)驗(yàn)應(yīng)該唯一說(shuō)明一個(gè)問(wèn)題。成功了,唯一的結(jié)論是推論是成功的;失敗了,唯一的結(jié)論是推論是失敗的。這都是帶有唯一性的。實(shí)際操作中可能并不好做到,但其中的一個(gè)唯一應(yīng)該是可以做到的。
2.由于軟件硬件的耦合,雜散參數(shù)的影響。根本問(wèn)題一樣,可能現(xiàn)象每次發(fā)生都不一樣。大膽的假設(shè),仔細(xì)的求證是調(diào)試中是可以依托的一個(gè)大法寶。
3.經(jīng)驗(yàn)總得來(lái)說(shuō),是一種實(shí)踐過(guò)程中的總結(jié)和記憶。一般來(lái)講,經(jīng)驗(yàn)往往帶有不精確性和一些大前提。在下一個(gè)項(xiàng)目或調(diào)試中應(yīng)用這些經(jīng)驗(yàn),要確認(rèn)這些不精確性和前提。如同定理一樣,說(shuō)三角形內(nèi)角和是180度,在歐氏幾何里是正確的,在曲面幾何里就不正確了。所以,定理公理都是有應(yīng)用前提,經(jīng)驗(yàn)也逃脫不了這些問(wèn)題。
一次和朋友去吃飯,他講了個(gè)生動(dòng)的例子:老婆和別人打八十分。那個(gè)算得精啊,每張牌都記住了算到了,準(zhǔn)備把手里的一對(duì)AA,KK給出了。拖拉機(jī)啊。出去了就被別人給滅了,原來(lái)她還以為在打兩幅牌的,他們?cè)诖虻檬侨频摹?br />
也是夠悲催的。
4.要對(duì)調(diào)試的系統(tǒng)的原理比較熟悉。不熟悉是不行的,考慮問(wèn)題很可能就沒有邊界和方向。這也懷疑那也懷疑,變成了什么都懷疑,迷失了方向,面也太大了,不利于問(wèn)題的解決。
5.現(xiàn)象的分析。解決問(wèn)題都是從現(xiàn)象入手,現(xiàn)象要分清楚主次。結(jié)合設(shè)計(jì)的原理,分析出現(xiàn)象之間的關(guān)系,抓主要矛盾。次要現(xiàn)象很可能在主要現(xiàn)象解決后,伴隨著一起消失。
6.縮小包圍圈。有時(shí)候問(wèn)題過(guò)于復(fù)雜,現(xiàn)象五花八門,可考慮剝洋蔥的辦法。試探性的去逼近核心問(wèn)題。比如說(shuō),一個(gè)溢出錯(cuò)誤,很可能產(chǎn)生一系列的連鎖反應(yīng)。也并不是一定會(huì)出現(xiàn)??稍囂叫缘脑龃缶彌_區(qū),調(diào)整棧,看看有沒有緩解;或者縮小緩沖區(qū)和棧,試探性看看程序的反應(yīng)。對(duì)問(wèn)題的現(xiàn)象做到心中有數(shù)。
7.對(duì)比法,在遇到一些復(fù)雜的問(wèn)題的時(shí)候,不能解決。若有參照物,也可以定位問(wèn)題。但對(duì)比法要注意一點(diǎn),只有條件相同或相近的情況下,系統(tǒng)結(jié)構(gòu)相同或相近下才有意義。否則比較會(huì)大大的降低可比性以及結(jié)果的意義。比如說(shuō)一個(gè)軟件模塊或硬件模塊,在其他系統(tǒng)上正常,在本系統(tǒng)上不正常??赏茰y(cè)為使用的問(wèn)題。輸入?yún)?shù)、輸出參數(shù),動(dòng)態(tài)運(yùn)行的條件不滿足。
9.置換法,這個(gè)比較簡(jiǎn)單,一個(gè)一個(gè)換,換到有問(wèn)題的那個(gè),問(wèn)題解決了,自然也就定位問(wèn)題的所在點(diǎn)了。也可以把目標(biāo)系統(tǒng)的模塊置換到正確的系統(tǒng)上,看看能不能正常工作。
10.分治法,分治法是分而治之,各個(gè)擊破的方法。現(xiàn)象很多,按照原理將現(xiàn)象分類。相關(guān)聯(lián)的現(xiàn)象可作為一組,綜合考慮。
11.調(diào)試分層次,經(jīng)常使用的功能,重要的核心功能應(yīng)該先調(diào)試,而次要的,不常用的功能最后調(diào)試。
12.最后,細(xì)致的觀察。觀察可以區(qū)別兩種差別不大的現(xiàn)象;可以明確經(jīng)驗(yàn)的應(yīng)用范圍;可以解決一些非常棘手的問(wèn)題。Jtag不是萬(wàn)能的,會(huì)影響程序的速度和執(zhí)行的頻度;printf影響 棧的深淺以及運(yùn)行時(shí)序;示波器探頭是個(gè)負(fù)載,信號(hào)可能驅(qū)動(dòng)不起來(lái)……這些問(wèn)題一般都是細(xì)微的現(xiàn)象,非常容易被忽視,唯有細(xì)致的觀察仔細(xì)的思考才可以捕捉。
審核編輯:劉清
-
軟件調(diào)試
+關(guān)注
關(guān)注
0文章
4瀏覽量
6234 -
硬件調(diào)試
+關(guān)注
關(guān)注
1文章
9瀏覽量
10745
原文標(biāo)題:如何找到解決問(wèn)題的思路和方法——關(guān)于軟硬件調(diào)試
文章出處:【微信號(hào):射頻美學(xué),微信公眾號(hào):射頻美學(xué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
CortexR52內(nèi)核Cache的具體操作
![CortexR52內(nèi)核Cache的<b class='flag-5'>具體操作</b>](https://file1.elecfans.com/web2/M00/FC/75/wKgZomaUis6AMjitAAAiibG6WqY593.png)
請(qǐng)問(wèn)在ZLLClassical Join 的入網(wǎng)方式是怎樣的?我該如何具體操作?
看門狗定時(shí)器的具體操作
移植Miracl庫(kù)的具體操作步驟
AssistiveTouch的輔助功能鎖定屏幕如何具體操作呢
使用CH340來(lái)下載燒錄或調(diào)試的具體操作步驟有哪些
Protel在線教程:如何在PCB中給PCB補(bǔ)淚滴的具體操作
![Protel在線教程:如何在PCB中給PCB補(bǔ)淚滴的<b class='flag-5'>具體操作</b>](https://file1.elecfans.com//web2/M00/A5/91/wKgZomUMOQiAak8yAALIfPA-jXk962.jpg)
在硬件/軟件接口調(diào)試
![在<b class='flag-5'>硬件</b>/<b class='flag-5'>軟件</b>接口<b class='flag-5'>調(diào)試</b>](https://file.elecfans.com/web2/M00/4F/8D/pYYBAGLCqhKANw4mAAP9L5kBhcs244.png)
Allegro打過(guò)孔的具體操作步驟
PCB電鍍工藝流程及具體操作方法
差分探頭的使用具體操作步驟
![差分探頭的使用<b class='flag-5'>具體操作</b>步驟](https://file.elecfans.com//web2/M00/9C/5D/poYBAGQqRZCAIxkQAAB0wtEOrvo46.jpeg)
三坐標(biāo)測(cè)量?jī)x的具體操作步驟
![三坐標(biāo)測(cè)量?jī)x的<b class='flag-5'>具體操作</b>步驟](https://file1.elecfans.com/web2/M00/89/57/wKgaomSBapqAQXi_AADdqSBz3_o191.png)
評(píng)論