天天看點

《Effective Debugging:軟體和系統調試的66個有效方法》——第13條:使自己盡可能多地觀察到與調試有關的資料

本節書摘來自華章計算機《effective debugging:軟體和系統調試的66個有效方法》一書中的第2章,第13節,作者[希]迪歐米迪斯·斯賓奈裡斯(diomidis spinellis),愛飛翔 譯,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

我們在調試的過程中要處理大量資料,并且要把各式各樣的資料關聯起來,如源代碼、日志檔案中的條目、變量的值、棧的内容、程式的i/o以及測試的結果等。這些資料通常是由多個處理流程與計算主機所産生的,如果能夠把它們全都适當地展示在調試者眼前,那麼将會給調試工作帶來很多的好處。首先,可以使我們發現資料之間的互相關系。例如,我們可以看到:當測試失敗的時候,日志檔案中會多出來一條記錄。其次,它可以令人盡量保持專注,避免因為來回切換而使思路受到幹擾。有時我們必須進入完全專注的狀态(參見第9條),才能找到資料之間的關鍵聯系,可是如果在進行單步調試的過程中總是要通過輸入指令或切換視窗來檢視某些變量的值,那麼我們就無法保持這種專注的狀态了。此外,留出足夠的空間來顯示較長的代碼行,也能夠幫助我們發現一些可能會錯過的模式。你或許會按照很多代碼風格指南所提倡的那樣,把編輯器的視窗寬度設為70至80列,但是如果日志檔案和棧跟蹤資訊中的某些行比較長,那麼為了符合這個80列寬的限制,它們會分成很多行來顯示,而這樣是不利于進行閱讀與分析的。是以,我們可以使編輯器在水準方向上盡量占滿整個顯示器,這樣其中的某些模式就會自然地浮現出來,如圖2.1所示。下面給出幾條建議,希望能夠幫助大家在調試時看到更多的資料。

第一條建議是:盡量擴大顯示區域。很多人都使用兩台或兩台以上的高分辨率顯示器來做開發。(用廉價的大螢幕電視機是不行的,因為它們顯示出來的字元很模糊。)要想同時使用多台顯示器,就必須配備功能強大的顯示卡接口。如果你用的是筆記本,那麼可以外接一台顯示器,把筆記本的螢幕延伸到那台顯示器上(而不是使兩者顯示完全相同的畫面),這樣做可以增加你所能夠看到的内容。無論是使用桌上型電腦還是筆記本,都應該把編輯器或終端機的視窗切換到全屏模式,這種顯示效果在目前的全高清(full hd)顯示器上面或許顯得有點笨拙,然而對于某些調試任務來說卻是必不可少的,因為它使得我們能夠在橫向和縱向上盡可能多地看到相關的資料。如果切換到全屏模式之後還是無法把資料顯示到整個螢幕中,那麼可以考慮把字型調小(并戴上眼鏡),或是使用投影儀。

《Effective Debugging:軟體和系統調試的66個有效方法》——第13條:使自己盡可能多地觀察到與調試有關的資料

把資料列印出來也是個相當有效的辦法。雷射列印機在600dpi的分辨率下,就可以把6600×5100像素的内容顯示在與信紙大小相同的紙張上面。這樣打出來的資料要比顯示器更多,而且看起來也更為清爽。資料結構的定義以及代碼清單等變化不太頻繁的資料,可以打到紙上,以便給顯示器留下更多的空間,用來展示那些在調試過程中頻繁變動的資料。筆者最後要說的是,列印程式代碼的最佳紙張,肯定是15英寸的綠線條折疊紙(green bar fanfold paper),這種紙橫向可以打132列,并且能夠沿着縱向一直列印下去。如果你現在還有一台能夠處理這種紙張的列印機,那就用它來列印代碼吧。你要好好守着它。

如果能夠同時看到比較多的資料,那我們就可以更加專注地進行調試,進而找到資料所展現出的模式以及資料之間的互相關系。

盡可能地将顯示區域擴至最大。

把相對靜态的資料列印到紙上。