前言
某個多模塊項目中使用多個版本的 Spring,如 Spring 4,Spring 5,在使用 IDEA Debug 過程中發現,Spring 部分 jar 如 spring-core 中的上面斷點,IDEA 可以成功進入。但是有部分如 spring-context IDEA 始終無法進入斷點。
當 IDEA 進入 spring-core 斷點時,打開 spring-context 任意源碼,可以發現 IDEA 提示 source code does not match bytecode。
看到這個提示,大概知道了問題。
主要原因為應用中使用 Spring4 ,調試過程中卻選擇 Spring5 源碼,由於兩個版本肯定存在一些改動,導致 Spring5 的源碼對應不上 Spring4 字節碼, IDEA Debug 無法進入相關斷點。
解決方法
知道問題的原因,需要找到解決辦法。剛開始以為 IDEA 緩存問題,於是 Build-Rebuild Project 重新構建工程,重新調試,並沒有什么鳥用。
沒辦法,只能在網上搜索相關解決辦法,於是乎在萬能的 stackoverflow 找到解決辦法。
解決方案:
如果應用中存在多個版本 jar 包時,IDEA 調試過程將會看到如下提示。
在這里我們可以選擇相應的版本進行調試。
如果很不幸,就像我一樣,沒有顯示這個提示,很可能某次調試過程禁用這個功能。不過也沒關系,我們可以重新在設置 Preferences/Debuggers 重新打開該選項。如圖所示:
歡迎關注我的公眾號:程序通事,獲得日常干貨推送。如果您對我的專題內容感興趣,也可以關注我的博客:studyidea.cn