- Java代碼審計實戰(zhàn)
- 王月兵 柳遵梁 覃錦端 劉聰
- 414字
- 2025-06-19 18:37:52
1.2.1 本地動態(tài)調(diào)試
本地動態(tài)調(diào)試是比較容易操作的,因為在有項目源碼,以及清晰完整的項目架構(gòu)的情況下,只需要使用IDEA等工具導(dǎo)入項目包并設(shè)置斷點,即可進行本地動態(tài)調(diào)試。
圖1-24所示為一個基于SSM(Spring、SpringMVC、MyBatis)框架的簡單Java Web項目,在Controller層調(diào)用刪除賬戶方法的代碼行(第39行)設(shè)置一個斷點。

圖1-24 簡單Java Web項目
在IDEA中單擊“調(diào)試”按鈕開啟動態(tài)調(diào)試,打開瀏覽器可以看到如圖1-25所示的功能。

圖1-25 Java Web項目功能示意
單擊圖1-25中的任意一個“刪除”按鈕,打開IDEA,可以看到程序在斷點處(第39行)停下,并輸出參數(shù)值以及方法調(diào)用棧等信息,如圖1-26所示。

圖1-26 程序運行到斷點處
單擊Step Into按鈕(見圖1-27中的箭頭處),進行動態(tài)調(diào)試,跟進到了Service層的AccountServiceImpl接口實現(xiàn)類的deleteAccountById方法中,如圖1-27所示。

圖1-27 AccountServiceImpl.deleteAccountById方法
若繼續(xù)跟進調(diào)試,則會調(diào)用Dao層的相關(guān)方法,在此不展開。動態(tài)調(diào)試相比靜態(tài)審計的好處就是可以看到程序在運行之后,客戶端執(zhí)行的操作及參數(shù)在后端各層級的代碼中是如何傳遞、調(diào)用的,這非常有利于代碼審計者厘清程序邏輯。
推薦閱讀
- JBoss Weld CDI for Java Platform
- 軟件項目管理(第2版)
- NLTK基礎(chǔ)教程:用NLTK和Python庫構(gòu)建機器學(xué)習(xí)應(yīng)用
- Learning Data Mining with Python
- Implementing Cisco Networking Solutions
- 從Excel到Python:用Python輕松處理Excel數(shù)據(jù)(第2版)
- 微服務(wù)從小白到專家:Spring Cloud和Kubernetes實戰(zhàn)
- 計算機應(yīng)用基礎(chǔ)案例教程
- 匯編語言編程基礎(chǔ):基于LoongArch
- Cocos2d-x Game Development Blueprints
- Hadoop大數(shù)據(jù)分析技術(shù)
- Learning VMware vSphere
- Python程序設(shè)計教程
- Three.js權(quán)威指南:在網(wǎng)頁上創(chuàng)建3D圖形和動畫的方法與實踐(原書第4版)
- Java核心編程