成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

調試心得:通過觀察正常的程序行為來識別Bug

開發 前端
在實際項目中,死鎖和掛起這類問題十分難以調試,因為出現這類問題時,調試器中并沒有輸出異常相關的信息。程序突然之間就停止了響應,開發者不得不苦思冥想,到底哪里出錯了。

有時候,當我調試一個問題的時候,我會特意忽略掉某些線程。
這個時候,有人就問了:”這些線程是干什么的?你為什么知道要忽略它們?”
我的回答是:我也不清楚這些線程是干啥的,但是無論它的內部工作是什么,這都是正常的?!?/p>

博主 Tess Ferrandez 一直在編寫關于 CLR 調試的系列文章,這些文章十分有用,但最為重要的一條是在調試 ASP.NET 死鎖問題時該如何忽略掉不相關的部分。
在實際項目中,死鎖和掛起這類問題十分難以調試,因為出現這類問題時,調試器中并沒有輸出異常相關的信息。程序突然之間就停止了響應,開發者不得不苦思冥想,到底哪里出錯了。

出現此類問題,我們需要先有一個大概的思路,即:我們需要尋找那些”不同尋?!钡臇|西,而為了找到這類東西,我們首先需要知道,哪些東西是正常的。

舉個例子,先運行程序一段時間,然后中斷到調試器,看看內存數據,線程,加載的模塊等相關信息,并將這些信息記錄下來。你所記錄下的這些信息,就是所謂的”正?!钡某绦蛐袨椋褪钦f,當程序正常運行的時候,你所記錄的就是正常的運行數據。

有了上面的記錄,當程序異常的時候,再次對比下運行時數據,就有可能識別出那些不太正常的數據結構了。

當調試一個大型工程的時候,可能程序會啟動非常多的線程,你不必知曉每個線程具體的工作細節。例如,當我掛接調試器到一個目標進程后,我經常會看到有一些線程會等待 RPC 對象或者是內核線程池相關的線程,說老實話,我也不清楚這些線程是干啥的,但是因為它們總是在那里悄無聲息的運行著,所以,我也不會太關注它們,這些可能就是我上面所說的正常的東西。

總結

隨著代碼規模越來越大,診斷機制需要進一步完善,單純通過下斷點調試可能不是那么有效了,這個時候,需要結合調試輸出和日志來查找問題。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2025-01-07 11:00:00

AI生成

2025-01-20 10:36:00

訓練模型AI

2017-03-31 09:00:25

機器人模仿人類

2021-03-26 13:49:29

人工智能AI深度學習

2013-11-08 09:22:17

程序員Bug調試

2017-04-19 10:25:01

JS斷點調試

2020-07-10 16:52:43

DelveGo程序開源

2021-03-25 14:46:24

人工智能機器學習技術

2013-07-15 15:47:35

App用戶行為

2017-11-27 11:26:35

程序員Bug調試

2010-04-07 11:36:56

JNCIP

2012-03-20 10:28:43

2011-02-22 16:09:53

Eclipse調試

2010-09-07 13:03:22

2009-04-27 09:18:55

2022-12-30 11:05:40

Rust代碼

2022-03-31 11:46:00

Go傳輸編碼標準庫

2009-06-11 17:37:32

EJB注釋

2023-03-10 08:37:33

預熱優化PostgreSQL

2023-07-26 06:43:07

函數調用
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲嫩草| av电影手机在线看 | 成人黄色网址大全 | 亚洲精品二区 | 国产精品美女久久久 | 精品视频一区二区 | 一级片在线观看 | 黄色毛片视频 | 蜜臀91视频| 精品一二三区 | 99久久99| 成人精品一区亚洲午夜久久久 | 亚洲成人一区二区 | 亚洲成人一区 | www.中文字幕.com | 亚洲成人一级片 | 欧美精品成人影院 | 亚洲精品在线观 | 午夜欧美| 成人在线视 | 99久久国产 | 日本一区二区三区四区 | 精品久久久久香蕉网 | 久久久久久久国产 | 精品一区av| 欧美日韩在线电影 | 久久精品视频在线观看 | www.一区二区三区 | 欧美xxxⅹ性欧美大片 | av一区二区三区四区 | 亚洲高清成人 | 视频一区在线观看 | 国产欧美日韩综合精品一区二区 | 黄色在线| 成人av播放 | 天天操 天天操 | 精品国产一区探花在线观看 | 久久精品一区二 | 亚洲人成人一区二区在线观看 | 亚洲精品一区二区三区中文字幕 | 日本一区二区高清不卡 |