日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

qt5.9.0调试如何查看变量的值_深入了解 Java 调试

發(fā)布時(shí)間:2025/3/11 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 qt5.9.0调试如何查看变量的值_深入了解 Java 调试 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Bug(俗稱"八阿哥") 是軟件開(kāi)發(fā)繞不過(guò)的一道坎,因此調(diào)試便成了每位程序員一項(xiàng)必備的核心技能。調(diào)試不僅有助于理解程序的運(yùn)行流程,還能改進(jìn)代碼質(zhì)量,最終提高開(kāi)發(fā)者解決問(wèn)題的能力以及交付軟件的品質(zhì)。

本文旨在討論 Java 調(diào)試關(guān)鍵技巧,同時(shí)也會(huì)介紹生產(chǎn)環(huán)境中調(diào)試 Java 的最佳實(shí)踐。

0 調(diào)試 Java 項(xiàng)目

本節(jié)討論 Java 項(xiàng)目調(diào)試中的常見(jiàn)概念與技巧,包括Breakpoint (斷點(diǎn))、Step filter (單步過(guò)濾器)、Drop to Frame (跳出函數(shù)到選定層)等。這些技術(shù)同樣可以在復(fù)雜場(chǎng)景下使用。

條件斷點(diǎn)

斷點(diǎn)用來(lái)指定在調(diào)試過(guò)程中程序停止執(zhí)行的位置。通過(guò)臨時(shí)掛起執(zhí)行過(guò)程,可以觀察或修改字段與變量值。下面的內(nèi)容雖然使用了 Eclipse進(jìn)行演示,但是相關(guān)概念同樣適用于其他 Java IDE。條件斷點(diǎn)即設(shè)置成在滿足特定條件時(shí)觸發(fā)的斷點(diǎn),用來(lái)檢查條件發(fā)生時(shí)程序的狀態(tài)、調(diào)用堆棧及重要的變量值。

下面的示例對(duì)音樂(lè)專輯得分計(jì)算算術(shù)平均值:

假設(shè)有數(shù)百?gòu)垖]?#xff0c;可以在循環(huán)中設(shè)置條件斷點(diǎn) album.getRating().score == 0。當(dāng)出現(xiàn)專輯得分為0時(shí),程序就會(huì)停止執(zhí)行。

其他斷點(diǎn)類型

除了上面介紹的斷點(diǎn)類型,不同的 Java IDE 還提供了其他類型的斷點(diǎn):

  • 事件斷點(diǎn):與事件綁定,在遇到調(diào)試器能夠識(shí)別的事件時(shí)觸發(fā);
  • 字段斷點(diǎn):給定字段或表達(dá)式的值發(fā)生變化時(shí),字段斷點(diǎn)將停止正在執(zhí)行的程序。調(diào)試時(shí)可以指定一個(gè)字段作為觀察點(diǎn),表達(dá)式讀取、修改時(shí)停止執(zhí)行;
  • 方法斷點(diǎn) :進(jìn)入或退出指定方法時(shí)掛起程序,用來(lái)檢查特定方法的進(jìn)入或退出事件;
  • 行斷點(diǎn):程序到達(dá)斷點(diǎn)中設(shè)置的特定代碼行時(shí)停止程序執(zhí)行。

使用 Rookout 設(shè)置斷點(diǎn)

Rookout 是一個(gè)創(chuàng)新的調(diào)試平臺(tái),在不停止或中斷程序的情況下搜集調(diào)試數(shù)據(jù)。支持自定義斷點(diǎn)觸發(fā)條件。Rookout 提供的"斷點(diǎn)狀態(tài)"功能非常強(qiáng)大:在斷點(diǎn)附近通過(guò)警告標(biāo)志或 展示斷點(diǎn)狀態(tài)。

Rookout 有5種斷點(diǎn)狀態(tài):

  • Active (紫色, 實(shí)心)
  • Pending (紫色, 空心)
  • Warning (紫色, 實(shí)心, 帶三角形)
  • Error (紫色, 空心, 帶三角形)
  • Disabled (灰色, 空心)

"斷點(diǎn)狀態(tài)" 可以在查看日志或調(diào)試信息前就能對(duì)程序運(yùn)行狀況有所了解。

Step Filter (單步過(guò)濾器)

Step Filter 可以在調(diào)試中指定需要跳過(guò)的 package。在調(diào)試多個(gè) class、第三方庫(kù)或框架時(shí)非常好用。在 Eclipse 中可以通過(guò) Window Preferences >>Java Debug >>Step Filtering 配置。

Drop to frame (跳出函數(shù)到選定層)

這種技術(shù)可以在調(diào)試期間選擇并重新執(zhí)行程序的一部分:指定程序調(diào)用堆棧中任意幀(frame),在 Debug View 中點(diǎn)擊 Drop-to-frame 按鈕,調(diào)試器會(huì)從這里重新啟動(dòng)。Drop to frame 不會(huì)影響字段或現(xiàn)有數(shù)據(jù),例如已寫入數(shù)據(jù)庫(kù)的記錄。

1 遠(yuǎn)程調(diào)試

大多數(shù) Java IDE 都支持 JVM 遠(yuǎn)程調(diào)試。設(shè)置調(diào)試參數(shù)如下:

Eclipse 用戶需輸入主機(jī)名 (hostname) 和端口號(hào),如下圖所示:

2 在生產(chǎn)環(huán)境調(diào)試 Java

現(xiàn)如今開(kāi)發(fā)節(jié)奏越來(lái)越快,代碼發(fā)布也是如此。無(wú)論測(cè)試流程如何嚴(yán)格,總會(huì)有漏網(wǎng)之魚(yú)。當(dāng)這些漏洞遇到生產(chǎn)中的實(shí)際數(shù)據(jù),產(chǎn)生的壓力隨之飆升。因此,進(jìn)行系統(tǒng)擴(kuò)展的同時(shí)解決潛在的漏洞非常關(guān)鍵。

下面的策略可供每個(gè) Java 開(kāi)發(fā)者參考:

  • 確定錯(cuò)誤發(fā)生的時(shí)間;
  • 評(píng)估錯(cuò)誤的嚴(yán)重程度(優(yōu)先級(jí));
  • 篩選定位導(dǎo)致程序出錯(cuò)的狀態(tài);
  • 接下來(lái),跟蹤并解決根本原因(root cause);
  • 最后,打補(bǔ)丁。

除了上面的五個(gè)步驟,還應(yīng)當(dāng)遵守下面這些生產(chǎn)環(huán)境最佳實(shí)踐:

提高日志等級(jí)

大多數(shù)情況下,錯(cuò)誤信息沒(méi)有包含足夠的上下文內(nèi)容,因此調(diào)試時(shí)需要提升日志等級(jí)。完整的上下文內(nèi)容可以有效地理解、定位和確定錯(cuò)誤的根本原因。一種常見(jiàn)的方法,在每個(gè)線程的入口點(diǎn)生成 UUID。

理想情況下,可以按照以下格式設(shè)置線程名稱:

這樣,堆棧跟蹤信息會(huì)以 “threadName: pool-7-thread-22, UUID: EB85GTA, MsgType: AnalyzeGraph, MsgID: 415669, 29/03/2020 04:44” 開(kāi)頭,比起 “pool-7-thread-22” 這樣的名字更有意義。

集中日志

在應(yīng)用程序生命周期各階段尤其是生產(chǎn)階段處理錯(cuò)誤時(shí),應(yīng)優(yōu)先考慮高效的日志記錄機(jī)制。把會(huì)話中所有重要事件匯集到統(tǒng)一的日志服務(wù)器,不但能夠降低調(diào)試的難度,而且在跟蹤關(guān)鍵產(chǎn)品指標(biāo)時(shí),還可以幫助監(jiān)視應(yīng)用程序中發(fā)生錯(cuò)誤的情況。

檢查堆棧跟蹤和其他日志

調(diào)試異常時(shí),堆棧跟蹤非常有用:它能幫助確定在程序崩潰時(shí)調(diào)用了哪些函數(shù)以及調(diào)用順序。下面的代碼使用 printStack() 方法打印異常堆棧:

輸出結(jié)果:

復(fù)制實(shí)例

獲取日志后,接下來(lái)最重要的是在復(fù)制場(chǎng)景(實(shí)例)。通常會(huì)創(chuàng)建一個(gè)與 IDE 調(diào)試類似的環(huán)境,便于分析與解決錯(cuò)誤。

3 總結(jié)

Java 調(diào)試并不是開(kāi)發(fā)者的噩夢(mèng)。一點(diǎn)創(chuàng)造性思維加上合適的工具,開(kāi)發(fā)者會(huì)更有信心、更加快速準(zhǔn)確地識(shí)別、診斷和解決代碼中的錯(cuò)誤。

總結(jié)

以上是生活随笔為你收集整理的qt5.9.0调试如何查看变量的值_深入了解 Java 调试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。