国产精品免费久久久久电影院_亚洲日韩蜜桃av无码一二三区_AV在线无码免费特黄毛片_亚洲欧美日韩电影在线专区_福利小视频午夜福利一区二区中文字幕_在线免费观看黄黄色视频_欧美菊爆视频在线观看免费_婷婷六月丁香五月_久久伊人精品中文字幕有码_强奸国产无码激情

在調(diào)試Spring 應(yīng)用程序之前要知道的三件事

2022-06-01

694

Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it.

——出自 Brian W. Kernigham


調(diào)試很困難,在某些地方——比如在云、生產(chǎn)環(huán)境或 Java Spring 中——甚至更難。此外,調(diào)試不僅僅是查找或修復(fù)代碼中的錯(cuò)誤。它還允許開(kāi)發(fā)人員在他們剛加入的項(xiàng)目上開(kāi)始工作時(shí)查看整個(gè)應(yīng)用程序的流程,或者在開(kāi)始編寫新功能之前刷新他們的記憶,從而更好地理解現(xiàn)有的代碼庫(kù)。在這種情況下,以調(diào)試模式運(yùn)行代碼以確保您了解應(yīng)用程序的整個(gè)流程是明智之舉。


If debugging is the process of removing software bugs, then programming must be the process of putting them in.

——出自 Edsger W. Dijkstra


如果你想產(chǎn)生一個(gè)穩(wěn)定的應(yīng)用程序,調(diào)試和編程一樣重要。為了調(diào)試 Spring 應(yīng)用程序,我們需要能夠執(zhí)行以下操作:

通過(guò)設(shè)置斷點(diǎn)來(lái)控制代碼的執(zhí)行;

暫停線程并單步執(zhí)行代碼;

檢查變量的內(nèi)容;


在本文中,您將了解調(diào)試 Spring 應(yīng)用程序之前應(yīng)注意的三件事。


開(kāi)發(fā)人員在準(zhǔn)備調(diào)試時(shí)應(yīng)該注意哪些 Java 特性?


· 遠(yuǎn)程調(diào)試在生產(chǎn)中運(yùn)行的應(yīng)用程序既危險(xiǎn)又棘手。它會(huì)影響您的應(yīng)用程序性能,并在遇到斷點(diǎn)時(shí)使其無(wú)法使用。

· Java 越來(lái)越多地用于分布式環(huán)境,因?yàn)樗С侄嗑€程、核心網(wǎng)絡(luò) API 和豐富的數(shù)據(jù)結(jié)構(gòu)。調(diào)試多線程應(yīng)用程序很復(fù)雜,因?yàn)槟仨毻瑫r(shí)跟蹤多個(gè)線程。

· 您應(yīng)該知道 JVM 的默認(rèn)行為是禁用調(diào)試。由于打開(kāi)調(diào)試器訪問(wèn)服務(wù)器的端口會(huì)帶來(lái)安全問(wèn)題,因此不建議為生產(chǎn)中的應(yīng)用程序啟用遠(yuǎn)程調(diào)試。


要在Java 虛擬機(jī)(JVM) 上為基于 Maven 的 Spring Boot 應(yīng)用程序啟用調(diào)試模式  ,您可以將以下命令行參數(shù)傳遞給 JVM。


調(diào)試Spring應(yīng)用


另一種選擇是在 Maven pom.xml 文件中使用 Spring Boot Maven 插件提供以下配置。


調(diào)試Spring應(yīng)用


在此之后,您只需要一個(gè)支持調(diào)試的 IDE。(不妨體驗(yàn)一下TitanIDE——云原生集成開(kāi)發(fā)環(huán)境


準(zhǔn)備調(diào)試 Java/Spring 應(yīng)用程序時(shí)應(yīng)注意的三個(gè)問(wèn)題


當(dāng)您要遠(yuǎn)程調(diào)試應(yīng)用程序時(shí),您應(yīng)該提前計(jì)劃一些問(wèn)題。我們現(xiàn)在將介紹其中的三個(gè)大問(wèn)題,還將討論如何克服這些挑戰(zhàn)。

href="/"


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

Java 已針對(duì)本地調(diào)試進(jìn)行了優(yōu)化,在非本地環(huán)境中調(diào)試時(shí)需要小心謹(jǐn)慎。通常,調(diào)試發(fā)生在 IDE 中,這需要在服務(wù)器上進(jìn)行獨(dú)特的設(shè)置。如果您計(jì)劃在本地調(diào)試應(yīng)用程序,這很有效,但是當(dāng)您必須調(diào)試在生產(chǎn)中實(shí)時(shí)運(yùn)行并為請(qǐng)求提供服務(wù)的應(yīng)用程序時(shí),情況就完全不同了。


在分布式環(huán)境中調(diào)試

在分布式環(huán)境中調(diào)試應(yīng)用程序可能會(huì)讓人不知所措。想象一下,在多臺(tái)服務(wù)器上部署和運(yùn)行的應(yīng)用程序中跟蹤和隔離生產(chǎn)問(wèn)題是多么具有挑戰(zhàn)性。


調(diào)試云原生應(yīng)用程序

如今,將 Spring 應(yīng)用程序容器化并在 Kubernetes 等容器編排器之上運(yùn)行是很常見(jiàn)的。調(diào)試非容器化工作負(fù)載絕非易事,而容器化又增加了一層復(fù)雜性。借助一種部署和運(yùn)行云原生工作負(fù)載的新方法,傳統(tǒng)的調(diào)試方法不再適用——第三方實(shí)時(shí)調(diào)試工具可以幫助您掌握這種新方法。


· Kubernetes 本身提供了幾個(gè)開(kāi)箱即用的選項(xiàng)來(lái)調(diào)試 Pod 的問(wèn)題。這是我們可以用來(lái)解決 Kubernetes 工作負(fù)載問(wèn)題的命令列表。


Spring應(yīng)用調(diào)試



· 另一個(gè)值得考慮的選擇是使用 Skaffold等工具的調(diào)試功能。Skaffold 是由 Google 開(kāi)發(fā)的開(kāi)源工具,可幫助改善開(kāi)發(fā)人員在 Kubernetes 部署方面的體驗(yàn)。它可以自動(dòng)構(gòu)建、推送和部署部署到 Kubernetes 的應(yīng)用程序的樣板部分。不僅如此,它還可以使用 skaffold debug command檢測(cè)容器運(yùn)行時(shí)技術(shù)(例如,Java 的 JDWP 和 Python 應(yīng)用程序的 debugpy)并動(dòng)態(tài)啟用調(diào)試功能。


· Telepresence 是在本地調(diào)試 Kubernetes 服務(wù)的另一種選擇。Telepresence 通過(guò)在本地開(kāi)發(fā)機(jī)器和遠(yuǎn)程管理的 Kubernetes 集群之間創(chuàng)建雙向網(wǎng)絡(luò)連接來(lái)加速 Kubernetes 應(yīng)用程序的內(nèi)部開(kāi)發(fā)循環(huán)。您無(wú)需花時(shí)間配置遠(yuǎn)程調(diào)試協(xié)議和使用 kubectl port-forward 命令公開(kāi)端口即可在本地訪問(wèn)遠(yuǎn)程 Kubernetes 服務(wù)。


結(jié)論

軟件交付要經(jīng)過(guò)多次測(cè)試迭代,但錯(cuò)誤是不可避免的,而調(diào)試是您對(duì)它們的最佳防御之一。


文章改編自Karl Hughes《Three things to know before debugging your spring application》。

href="/"

—————————————————————————


TitanIDE,云原生集成開(kāi)發(fā)環(huán)境


TitanIDE 采用 B/S 架構(gòu),是以瀏覽器作為客戶端,以服務(wù)器作為服務(wù)端運(yùn)行在云端的云原生集成開(kāi)發(fā)環(huán)境,包括工作空間、項(xiàng)目、應(yīng)用端口映射、多租戶、權(quán)限管理等功能。 TitanIDE 提供了常用的語(yǔ)言環(huán)境模板,讓您能夠更快速的啟動(dòng)一個(gè)開(kāi)箱即用的IDE,從而聚焦業(yè)務(wù)開(kāi)發(fā),不管在哪里,只需要瀏覽器就能編寫并運(yùn)行、調(diào)試您的項(xiàng)目代碼。


開(kāi)發(fā)上云,是云原生應(yīng)用開(kāi)發(fā)不可逆轉(zhuǎn)的趨勢(shì),TitanIDE要做開(kāi)發(fā)者之間的互聯(lián)的橋梁,打通云原生開(kāi)發(fā)體系。


TitanIDE 在線體驗(yàn)環(huán)境,免費(fèi)體驗(yàn)>






技術(shù)交流
我們建立了多個(gè)云原生技術(shù)交流群,其中有來(lái)自O(shè)racle、Citrix、華為、騰訊等國(guó)內(nèi)外云計(jì)算專家,立即掃碼,拉你進(jìn)群。目前已有2000+開(kāi)發(fā)者加入我們......
云原生廠商 云原生技術(shù)服務(wù)商
在云原生時(shí)代,kaiyun開(kāi)云創(chuàng)新致力于通過(guò)賦能開(kāi)發(fā)者,實(shí)現(xiàn)企業(yè)快速迭代與交付,大幅提升創(chuàng)新效率。
產(chǎn)品下載