線上故障分析-故障分級原因分類混沌工程排除方法_第1頁
線上故障分析-故障分級原因分類混沌工程排除方法_第2頁
線上故障分析-故障分級原因分類混沌工程排除方法_第3頁
線上故障分析-故障分級原因分類混沌工程排除方法_第4頁
線上故障分析-故障分級原因分類混沌工程排除方法_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

線上故障分析-故障分級,原因,分類,混沌?程,排除?法線上故障分析1?產(chǎn)故障分級規(guī)范概要1.1開篇計算機是當今世界的命脈,你能看到的任何地?,計算機都在改變著世界,不論是傳統(tǒng)的制造?產(chǎn),醫(yī)療通訊。還是新興的虛擬現(xiàn)實,??駕駛汽車等領域。過去的??年,計算機硬件飛速發(fā)展,軟件領域也是不斷刷新著?們的想象??梢哉f,計算機學科復雜?且龐?,甚?有?說,不亞于物理學。今天我們討論的話題,線上事故分析,只是其中的?部分,??部分,為了說清楚這?點,我們簡單了解?下軟件?程學科?,敻覃愄亍は7茽柕隆h密爾頓(英語:MargaretHeafieldHamilton,1936年8?17?-[1])被認為發(fā)明了軟件?程?詞。她幫助了NASA在阿波羅計劃中避免了嚴重問題。她曾這樣說:“有點像?根管治療:你總是拖到最后才做,但有些事可以預先做好,有點像預防性體驗,只不過是預防軟件出錯”。我們不妨簡單總結如何開發(fā)?個?型的軟件項?下:1-基于?向對象的編程語?2-容易使?的集成開發(fā)環(huán)境3-?檔和注釋(程序員最討厭的兩件事,寫注釋給別?讀,閱讀別?沒有寫注釋的4-構建管理和版本控制5-質量保證測試(QUALITYASSURANCE-QA)每個軟件從業(yè)者從寫下第??代碼開始,就?刻不停地和軟件中的錯誤做?爭開發(fā)和維護(修復缺陷、確保資源充?等保障軟件運?的活動)是?對伴隨軟件運??產(chǎn)?的雙熱愛從零到?開發(fā)軟件是開發(fā)者的天性看著??編寫的軟件完美運?,為其他提供服務,?直是驅動開發(fā)者前進的動?。為了更快更好地開發(fā)軟件,我們不斷改進開發(fā)?法和軟件架構,但是開發(fā)者在使?新的?法和更復雜的架構時,往往也會低估潛在的風險。本課程話題,主要討論質量測試上線后,運營環(huán)節(jié)期間的?些問題,當然,我們暫時并不界定事故的產(chǎn)?到底是因為測試覆蓋不全還是操作不當?shù)?,這某種程度體現(xiàn)著管理的?式問題。1.2事故等級定義業(yè)務和產(chǎn)品的線上質量、是研發(fā)團隊的?命線,也是?撐業(yè)務快速是錯,?步跑的前置條件。1.2.1故障等級定義

故障等級定義,不同的業(yè)務形態(tài),不同的公司團隊,有不?樣的劃分標準,下表列舉了?般常見的維度和標準【1】核?數(shù)據(jù)定義個?敏感信息:姓名、出??期、?份證件號碼、個??物識別信息、住址、通信通訊聯(lián)系?式、通信記錄和內容、賬號密碼、財產(chǎn)信息、征信信息、?蹤軌跡、住宿信息、健康?理信息、交易信息等。?戶畫像:職業(yè)、經(jīng)濟、健康、教育、個?喜好、信?、?為等?!?】系統(tǒng)級別定義零級系統(tǒng)(P0):為公司核?業(yè)務服務的核?系統(tǒng),?旦發(fā)?不可?會直接影響公司核?業(yè)務的業(yè)務連續(xù)性,對所有系統(tǒng)?戶造成影響。?級系統(tǒng)(P1):重點的業(yè)務系統(tǒng),?旦發(fā)?不可?,影響核?業(yè)務的連續(xù)型,并造成?部分內部?戶或外部?戶不可使?此系統(tǒng)。?級系統(tǒng)(P2):重要的業(yè)務系統(tǒng),?旦發(fā)?不可?存在?定的業(yè)務可?性問題,但不會影響核?業(yè)務的業(yè)務連續(xù)性。三級系統(tǒng)(P3):?核?的?撐系統(tǒng),?旦發(fā)?故障不直接產(chǎn)?業(yè)務影響,但會影響少部分內部?戶使?此系統(tǒng)?!?】影響范圍與故障等級1.2.2故障報告模板?例模板參考1.2.3故障響應處理機制如圖所?,?體描述了?般?產(chǎn)故障的處理機制故障發(fā)現(xiàn):1-客戶投訴或者業(yè)務反饋,研發(fā)?我發(fā)現(xiàn)2-監(jiān)控報警:技術監(jiān)控,業(yè)務監(jiān)控1.2.4思考為什么會發(fā)?這個問題?為什么測試階段沒有發(fā)現(xiàn)?為什么系統(tǒng)不能容錯?能不能更早發(fā)現(xiàn)問題?解決過程能不能更快?怎樣防?類似的事情發(fā)現(xiàn)?2?產(chǎn)故障原因和分類2.1故障分類代碼bug:上線代碼邏輯有問題,遇到特殊情況下,導致故障的情況操作不當:線上配置或資源配置錯誤,操作不當,?如啟動順序不合理,初始化腳本不對,語法?產(chǎn)數(shù)據(jù)隔離混?等系統(tǒng)級別軟件bug:技術架構中使?到的任何OS,第三?類庫,軟件在特殊場景下,bug被處罰導致故障的情況。突發(fā)流量:熱點或突發(fā)事件,引發(fā)的瞬時流量超過?常峰值或成倍增長,造成性能下降或功能不可?問題資源使?不均:整體產(chǎn)品線利?率不達標,但有些業(yè)務冗余度不?,導致資源不能正確合理使?容量預估不?:對個別業(yè)務核?池預估不??絡類:公?擁堵、丟包、專線、?絡設備故障、ip被攻擊(包括DNS被攻擊)、IP被封、域名被封、?絡軟件BUG、業(yè)務部門使?不當、未及時擴容等安全類:被攻擊,漏洞被利均歸為此類局?故障:ISP,根域名服務,電?,空調,光纜等外部單位故障導致的問題。硬件故障:任何硬件??為原因損壞導致的故障均歸為此類第三?合作公司或接?故障:項?依賴的第三?公司或接?故障2.2bug是可以完全避免的么?-了解?常項??中,站在開發(fā)者的?度:?多數(shù)程序員會花費70%-80%時間調試,?不是在寫代碼,雖然現(xiàn)在有很好的?具能極?幫助程序員防?和解決錯誤另?個重要部分給代碼寫?檔由于現(xiàn)在的需求越來越復雜,依賴的外部條件,技術組件也是越來越多,很多bug在所難免。但也有?些bug是不能被原諒的,所以養(yǎng)成良好的開發(fā)習慣,很重要?!綽ug起源】:1945年9?9?,格蕾絲·赫柏(GraceMurrayHopper)使?的MarkⅡ出現(xiàn)故障,導致?作?法?。經(jīng)過了近?天的檢查,格蕾絲找到了故障的原因:繼電器中有?只死掉的蛾?。蛾?被夾了出來。后來,”bug”(??)和”debug”(除?)這兩個本來普普通通的詞匯成了計算機領域中特指莫明其妙的“錯誤”和“排除錯誤”的專?詞匯?流傳?今,?格蕾絲·赫柏也因此成了第?個發(fā)現(xiàn)“bug”的?。另???,?名??的"千年?"bug,也是由她帶來的。當然,這也不全完全算作bug。2.3經(jīng)典故障?例-了解由軟件Bug引發(fā)的18次重?事故|程序師-程序員、編程語?、軟件開發(fā)、編程技術()近年的CSDN600萬?戶信息泄露事件:CSDN?站六百萬?戶信息外泄-?光博客()2018年github服務中斷24?時11分鐘事件:GitHub服務中斷24?時11分鐘事故分析報告()2.4混沌?程簡介觀念和思想來源于:【混沌?程】?書說起混沌?程?次,也許你聽過阿?的紅藍軍對抗?;煦?程是?種通過實驗探究的?式來讓我們理解系統(tǒng)?為的?法,就像科學家通過實驗來研究物理和社會現(xiàn)象?樣,混沌?程通過實驗來了解特定的系統(tǒng)如何使?混沌?程提?系統(tǒng)彈性呢?混沌?程通過設計和執(zhí)??系列實驗,幫助我們發(fā)現(xiàn)系統(tǒng)中潛在的、可以導致災難的或讓我們的?戶受損的脆弱環(huán)節(jié),推動我主動解決這些環(huán)節(jié)存在的問題和現(xiàn)在各?公司主流的被動式故障響應流程相?,混沌?程向前邁進了??步?;煦?程解決的問題:要設計良好的系統(tǒng)需要考慮很多因素,?如可靠性、安全性、可擴展性、可定制化、可伸縮性、可維護性、?戶體驗等。為了更?效地?撐業(yè)務發(fā)展,越來越多的企業(yè)選擇基于云服務或云原?理念來構建平臺。采?新思路和新技術必然會帶來系統(tǒng)架構和組織結構的變?,引?風險因素。如何通過實驗證明?產(chǎn)環(huán)境下的分布式系統(tǒng)在?對失控條件的時候依然具備較強的“可觀測性”和故障恢復能?這就是混沌?程要解決的問題?;煦?程和測試的區(qū)別:混沌?程故障注?和故障測試在側重點和?具集的使?上有些重疊舉個例?,Netflix的很多混沌?程實驗的研究對象都是基于故障注?來引?的?;煦?程和其他測試?法的主要區(qū)別在于,混沌?程是發(fā)現(xiàn)新信息的實踐過程,?故障注?則是基于?個特定的條件、變址的驗證?法?;煦?程和故障注?本質上是思維?式上的不同。故障注??先要知道會發(fā)?什么故障,然后?個?個地注?,?在復雜分布式系統(tǒng)中,想要窮舉所有可能的故障,本?就是奢望混沌?程的思維?式是主動去找故障,是探索性的,你不知道摘掉?個節(jié)點、關掉?個服務會發(fā)?什么故障,雖然按計劃做好了降級預案,但是關閉節(jié)點時卻引發(fā)了上游服務異常,進?引發(fā)雪崩,這不是靠故障注?或預先計劃能發(fā)現(xiàn)的?些混沌實驗的輸?樣例:模擬整個云服務區(qū)域或整個數(shù)據(jù)中?的故障部分刪除各種實例上的Kafka主題。重新創(chuàng)建?產(chǎn)中發(fā)?的問題。針對特定百分?的交易服務之間注??段預期的訪問延遲?;诤瘮?shù)的混亂(運?時注?):隨機導致拋出異常的函數(shù)。代碼插?:向?標程序添加指令和允許在某些指令之前進?故障注?。時間旅?:強制系統(tǒng)時鐘彼此不同步。在模擬I/O錯誤的驅動程序代碼中執(zhí)?例程。在Elasticsearch集群上最?化CPU核??;煦?程實驗的機會是?限的,可能會根據(jù)分布式系統(tǒng)的架構和組織的核?業(yè)務價值?有所不同混沌?程實現(xiàn)的四個步驟:1.定義并測量系統(tǒng)的“穩(wěn)定狀態(tài)”。?先精確定義指標,表明您的系統(tǒng)按照應有的?式運?。Netflix使?客戶點擊視頻流設備上播放按鈕的速率作為指標,稱為“每秒流量”。請注意,這更像是商業(yè)指標??技術指標;事實上,在混沌?程中,業(yè)務指標通常?技術指標更有?,因為它們更適合衡量?戶體驗或運營。2.創(chuàng)建假設。與任何實驗?樣,您需要?個假設來進?測試。因為你試圖破壞系統(tǒng)正常運?時的穩(wěn)定狀態(tài),你的假設將是這樣的,“當我們做X時,這個系統(tǒng)的穩(wěn)定狀態(tài)應該沒有變化?!睘槭裁?這種?式表達?如果你的期望是你的動作會破壞系統(tǒng)的穩(wěn)定狀態(tài),那么你會做的第?件事會是修復問題?;煦?程應該包括真正的實驗,涉及真正的未知數(shù)。3.模擬現(xiàn)實世界中可能發(fā)?的事情,?前有如下混沌?程實踐?法:模擬數(shù)據(jù)中?的故障、強制系統(tǒng)時鐘不同步、在驅動程序代碼中模擬I/O異常、模擬服務之間的延遲、隨機引發(fā)函數(shù)拋異常。通常,您希望模擬可能導致系統(tǒng)不可?或導致其性能降低的場景。?先考慮可能出現(xiàn)什么問題,然后進?模擬。?定要優(yōu)先考慮潛在的錯誤?!爱斈銚碛?常復雜的系統(tǒng)時,很容易引起出乎意料的下游效應,這是混沌?程尋找的結果之?,”“因此,系統(tǒng)越復雜,越重要,它就越有可能成為混沌?程的候選對象?!?.證明或反駁你的假設。將穩(wěn)態(tài)指標與?擾注?系統(tǒng)后收集的指標進??較。如果您發(fā)現(xiàn)測量結果存在差異,那么您的混沌?程實驗已經(jīng)成功-您現(xiàn)在可以繼續(xù)加固系統(tǒng),以便現(xiàn)實世界中的類似事件不會導致?問題?;蛘?,如果您發(fā)現(xiàn)穩(wěn)定狀態(tài)可以保持,那么你對該系統(tǒng)的穩(wěn)定性?可放?。引?混沌?程的?些建議:來源于-周洋(花名:中亭)-阿?巴巴?可?架構團隊?級技術專家第?,引?混沌?程,需要建?進??向失敗設計(可以使系統(tǒng)暴露出已有問題的設計)和擁抱失敗的技術?化第?,實施混沌?程,需要定義?個清晰可衡量的?標。第三,推?混沌?程,要在控制風險的前提下不斷提升效率?;煦?程是?種實踐思想,其本?是不綁定任何技術或?具的。減少問題的最好?法就是讓問題經(jīng)常性地發(fā)?,通過不斷重復失敗過程并找出解決?案,來持續(xù)提升系統(tǒng)的容錯能?和彈性?;煦?程?具3?產(chǎn)故障定位和解決流程3.1影響服務質量的因素3.1.1我們常常?對如下的業(yè)務場景

?量??業(yè)務邏輯sleep循環(huán)?寫查詢磁盤滿了、影響到有磁盤寫操作的接?慢查詢的SQLRedis中存在?key,帶寬打滿不知是哪些接?影響與被影響隊列堆積卻不知哪些接?影響流量放?系數(shù)評估全靠經(jīng)驗和看代碼3.1.2資源依賴接?依賴(內部服務、外部服務)?法整體查看服務、接?、資源之間的依賴關系沒有很好的外部服務監(jiān)控機制、?法統(tǒng)計依賴的服務質量數(shù)據(jù)資源依賴(DB、Redis、Memcached、隊列)?法整體查看服務、接?、資源之間的依賴關系容量評估及擴容標準全靠經(jīng)驗出問題后僅能憑經(jīng)驗逐?排查、?法迅速定位到代碼層?完全依賴dba幫忙排查服務器資源依賴(負載、內存、?絡······)資源指標上升后、?法判斷數(shù)值是常規(guī)上升還是資源異常3.1.3流量?流量來襲時、?法整體感知流量狀況流量多?算??核?業(yè)務是否收到影響?單?接?流量增加卻未達到整體的告警線、導致?法感知可視化是否實時?法直觀統(tǒng)計流量分布、?法查看具體每個接?的流量情況容量評估時、流量放?系數(shù)全靠?為判斷、對服務整體的放?系數(shù)?感知3.2故障發(fā)現(xiàn)?個?可?的業(yè)務系統(tǒng)除了技術架構?撐之外,監(jiān)控系統(tǒng)作為事中決策?撐和事后決策?損是必不可少的?部分?具:Prometheus、Zabbix、Nagios、Open-Falcon、Pageduty等3.2.1監(jiān)控體系匯總監(jiān)控體系分類:?般可分為:業(yè)務監(jiān)控,系統(tǒng)級別監(jiān)控,?絡監(jiān)控,程序代碼監(jiān)控,?志監(jiān)控,?戶?為分析監(jiān)控,其他種類監(jiān)控等系統(tǒng)級別監(jiān)控:主要跟操作系統(tǒng)相關的基本監(jiān)控項物理監(jiān)控(對物理機或者容器的監(jiān)控):存活、內存、cpu、load、硬盤(速率、使?率)、?絡活性檢測:進程、端?應?服務監(jiān)控:jvm、gc、線程數(shù)服務監(jiān)控:rpc和http接?的qps、rt、錯誤碼等業(yè)務監(jiān)控:包含?戶訪問的QPS,DAU,訪問狀態(tài)(http狀態(tài)碼),業(yè)務接?(登錄,注冊,聊天,送禮,留?,下單,?付,播放按鈕點擊率,搜索次數(shù),好評差評數(shù)等等),產(chǎn)品轉化率,充值額度,客訴等很宏觀的概念1-基礎業(yè)務監(jiān)控交易運營數(shù)據(jù)業(yè)務監(jiān)控?定義數(shù)據(jù)2-業(yè)務監(jiān)控的發(fā)展1-業(yè)務監(jiān)控設置靜態(tài)閾值?法滿?要求閾值應該配成多少,不同的業(yè)務甚?不同的時間段都需要不同的閾值業(yè)務總是出現(xiàn)周期性的趨勢,規(guī)則配置極易產(chǎn)?誤報特殊的業(yè)務場景例如活動引起的沖?回落、?促的沖擊都會引起?量誤報對?量維度的業(yè)務,?如要監(jiān)控外部千萬級別的商戶、上百個不同類型的錯誤碼該如何配置2-我們要根據(jù)業(yè)務特征和歷史數(shù)據(jù)?成動態(tài)閾值,?動化報警,及時發(fā)現(xiàn)故障3-業(yè)界產(chǎn)品:?付寶lego阿?媽媽goldeneye4-?般架構圖?絡監(jiān)控IDC,對?絡狀態(tài)的監(jiān)控(交換機、路由器、防?墻,vpn)對于?個互聯(lián)?公司必不可少,但是有很多時候?被忽略:例如:內?之間(物理內?,邏輯內?),外?,丟包率,?絡重傳,延遲等等?志監(jiān)控?志監(jiān)控?較重要,所以?般單獨管理和分類,?志不僅限于服務系統(tǒng)?志,對于很多專業(yè)化的運維?程師來說,需要采集的包括系統(tǒng)?志,設備?志,?戶?為?志等等,后續(xù)可加?處理,(splunk,ELK)常?監(jiān)控圖?鏈路監(jiān)控中間件監(jiān)控:異常監(jiān)控:當前排除故障的流程【項?背景】?前公司線上業(yè)務,經(jīng)常遇到以下?種問題:1.由于環(huán)境的隔離,導致?法從本地開發(fā)環(huán)境訪問線上環(huán)境,故?遇到問題,?法使?IDE遠程調試應?程序。2.為了線上業(yè)務的正常運作,所以不能在?產(chǎn)中調試,防?因調試導致所有線程不可?,從?影響線上業(yè)務。3.不同環(huán)境,參數(shù)不同,重現(xiàn)問題難。?旦我們在?產(chǎn)中檢測到問題,我們必須:1.回滾到穩(wěn)定版本。2.在?志和代碼中搜索錯誤和異常。3.添加log?志,創(chuàng)建新的修補程序版本。4.提交測試,等待測試和發(fā)布(有可能數(shù)天)。5.部署預發(fā),獲取詳細?志,驗證問題。6.發(fā)布新版本到線上。完成上述步驟,有的故障甚?持續(xù)數(shù)天,效率?常低下故障診斷跟蹤系統(tǒng)因此產(chǎn)?,其實縱觀計算機科學的發(fā)展,也是需求促使著新技術不斷被發(fā)明,?在?層?層的技術之上建?新的抽象。以京東的JEX平臺為例功能:1.?動捕獲程序中發(fā)?的異常事件2.?動保存異常發(fā)?時的完整調?棧(callstack)3.?動保存異常發(fā)?時的變量值4.?動關聯(lián)相關源代碼和變量異常退棧:JEX:保存了異常的DEBUG和TRACE信息3.3線上排除故障3.3.1故障排除?法上?節(jié),我們有提到,故障排除的?般流程,不妨在此再次總結如下:1.回滾到穩(wěn)定版本。2.在?志和代碼中搜索錯誤和異常。3.添加log?志,創(chuàng)建新的修補程序版本。4.提交測試,等待測試和發(fā)布(數(shù)天)。5.部署預發(fā),獲取詳細?志,驗證問題。6.發(fā)布新版本到線上。另外,別忘了?個很重要的?法:重啟服務3.3.2故障排除?般需要掌握的技能-?具篇1-?般情況下,需要了解業(yè)務場景,千萬不要第?時間著急解決bug,應先評斷是否可以回滾,影響???,是否為上層提供服務,是否有數(shù)據(jù)異常。2-應熟悉項?依賴的監(jiān)控,學會看監(jiān)控。3-應熟練開發(fā)環(huán)境的斷點排查與診斷,熟悉git,maven,idea的使?,分析如何復現(xiàn)線上故障。4-線上排查故障的?具鏈(僅供參考)-隨著課程慢慢補齊IDEA斷點?階1.window快捷鍵:所在?處:Ctrl+F8斷點屬性編輯:Ctrl+Shift+F82.斷點類型與設置?斷點(linebreakpoints)在到達設置斷點的代碼?時暫停程序。這種類型的斷點可以設置在任何可執(zhí)?的代碼?上。該類型斷點的圖標:字段斷點(fieldbreakpoints)當指定的字段被讀取或寫?時暫停程序。這允許你對與特定實例變量的交互作出反應。例如,如果在?個復雜的過程結束時,你的某個字段出現(xiàn)了明顯的錯誤值,設置?個字段觀察點可能有助于確定故障的來源。該類型斷點的圖標:?標右鍵點擊該斷點圖標,彈出該斷點配置,會有Fieldaccess和Fieldmodification選項,此選項是字段類型斷點特有的,分別對應訪問該字段或修改該字段觸發(fā)斷點,兩項同時選中,則訪問與修改該字段都會觸發(fā)斷點。?法斷點(methodbreakpoints)在進?或退出指定的?法或其實現(xiàn)之?時暫停程序,允許你檢查該?法的進?/退出條件。該類型斷點的圖標:當斷點加在class類名這??,且該類中沒有編寫構造函數(shù)(只有默認?參構造函數(shù)),當?默認?參構造函數(shù)時會觸發(fā)此斷點,程序掛起,故該斷點雖然圖標是?斷點類型圖標,但實際上屬于?法類型斷點。?標右鍵點擊該斷點圖標,彈出該斷點配置,會有Emulated、Methodentry、Methodexit選項,此選項是?法類型斷點特有的。Emulated勾選中,會將?法斷點優(yōu)化成?法中第?條和最后?條語句的?斷點,這樣會優(yōu)化調試的性能,因此在IDE中會默認選中,通過匹配符批量添加?法斷點,在斷點列表頁匹配符?例:異常斷點(Exceptionbreakpoints)異常斷點分為兩種,?種是AnyException,任意Throwable異常被捕獲或未被捕獲就會觸發(fā)斷點,另?種是指定類型的異常及其該異常?類被捕獲或未被捕獲會觸發(fā)斷點,該類型斷點圖標?標右鍵點擊該斷點圖標,彈出該斷點配置,會有Caughtexception和Uncaughtexception選項,此選項是字段類型斷點特有的,Caughtexception選項選中時,當指定的異常被捕獲時,觸發(fā)斷點程序掛起,Uncaughtexception選中時,當指定的異常未被捕獲時,觸發(fā)斷點程序掛起3.斷點控制斷點刪除1-所有類型斷點:斷點設置中移除對應的即可。2-快捷移除:?位置?標左鍵單擊即可移除(異常斷點除外)建議:為了避免意外刪除斷點并丟失其參數(shù),通常選擇點擊?標中鍵來刪除斷點。要做到這?點,請進?“設置/?選項”|“構建、執(zhí)?、部署”|“調試器”,選擇"拖到編輯器"或??標中鍵點擊。點擊?個斷點將啟?或禁?它。斷點靜?如果某些時候不需要在斷點處停留?段時間,可以將斷點靜?。這樣就可以在不離開調試器會話的情況下恢復正常的程序操作。之后,可以解除中斷點的靜?,繼續(xù)調試。斷點靜?會靜?所有斷點在斷點調試窗?,點擊斷點靜?按鈕啟?/禁?斷點正常通過斷電刪除的斷點,會連同當時斷點的內部所有配置?并刪除。如果想暫時關閉?個斷點,后續(xù)可能還會使?,這是?個很好的選擇同斷點刪除操作斷點移動/復制斷點移動:?標左鍵拖動斷點復制:按住ctrl,?標左鍵拖動4.斷點屬性配置?標操作:右鍵斷點:More(Ctrl+Shift+F8)快捷鍵:Ctrl+Shift+F8快捷鍵:光標所在?Alt+Enter斷點有許多屬性配置,如下圖所?,下?將會對各個屬性的作?以及使?進?說明。Enabled表?是否啟?該斷點,選中表?啟?,取消選中表?不啟?。Supend當斷點的Suppend屬性被勾選,觸發(fā)該斷點時,會觸發(fā)程序掛起,當該屬性未選中時,程序觸發(fā)該斷點時,程序不會掛起,常?于輸出?些表達式結果?志。當斷點的All屬性被勾選,觸發(fā)該斷點時,會掛起所有線程當斷點的Thead屬性被勾選,觸發(fā)該斷點時,只會掛起觸發(fā)該斷點的那個線程,不影響其他線程當需要在不暫停程序的情況下記錄?些表達式時(例如,需要知道?個?法被調?了多少次時),或者需要創(chuàng)建?個主斷點,在擊中后啟?附屬斷點時,?暫停性斷點是?常有?的。實際?產(chǎn)實踐中,可?于調試多線程并發(fā)的問題Condition可以輸??段能獲得true或false的表達式,程序運?到斷點處,且表達式條件為true才會觸發(fā)斷點Log下?三個屬性選項經(jīng)常配合Suppend屬性?起使?,?于在不掛起的情況下,輸出?些想要的?志信息Breakpinthitmessage:控制臺輸出觸發(fā)端點的?志信息,類似如:Breakpointreachedatocean.Whale.main(Whale.java:5)Stacktrace:輸出觸發(fā)斷點時的堆棧信息Evaluateandlog:計算表達式結果并輸出表達式結果到控制臺,表達式的計算基于斷點所在?的上?下,表達式的語句可以是字符串字?量,如“我是字符串”,也可以是?法調?,如users.size(),也可以是多?語句塊,表達式的結果取?return語句,如果沒有return語句,會取表達式中的最后??語句。Removeoncehit是否在斷點觸發(fā)后移除該斷點,后續(xù)不在觸發(fā)Disableuntilhittingthefollowingbreakpoint指定在另?個斷點觸發(fā)后,該斷點才啟?,若該斷點啟?后,并且被觸發(fā),場景:當只需要在某些條件下或某些操作后暫停程序時,這個選項很有?。在這種情況下,觸發(fā)斷點通常不需要停?程序的執(zhí)?,?是做成?暫停狀態(tài)。Filters前邊說的?都數(shù)屬性,都只針對?法程序運?上下?。此屬性更多關注通過過濾掉類、實例和調?者?法來微調斷點操作,只在需要時暫停程序。,有如下?種過濾?式:Catchclassfilters:此選項只對異常類型的斷點可?,可以讓程序只在指定類和?類中拋出的異常才會觸發(fā)斷點或者不在指定的類和?類中觸發(fā)斷點(即排除?些類,排除通常以-開始,例如-pacakge.ClassName),Instancefilters:只有指定實例id號可以觸發(fā)斷點,多個實例id號以逗號隔開,實例id號可以在Variables和Memory?板中查看Classfilters:可以讓程序只在指定類和?類中才會觸發(fā)斷點或者不在指定的類和?類中觸發(fā)斷

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論