時間:2020年10月10日
問題描述:
idea啟動了3個服務A、B、C;
C服務調用了A服務,A服務pom依賴了B的代碼;
debug斷點設在了B代碼上;
然后看B服務也沒有設置斷點通過,但是進程就是走不到B代碼的斷點上;
發現,由於A服務的斷點設置成通過了:
;
所以導致進程沒有停在那個斷點上!
可能的解釋:
你想研究HashMap源碼,可以把斷點打在你正在運行的項目依賴的rt.jar的HashMap.class文件上。
同理,此時請求A服務器,A服務pom依賴了B的代碼,按道理會有一個B的jar包在A服務器中;你把斷點打在這個B的jar包的某個class文件上,
自然是正確的;但是由於maven的友好設計,本地開發時,你並不需要每次都麻煩的將B項目代碼打成class的jar包放到A里面,而是B的改動
都會同步到A那兒,所以你此時在B的代碼上打斷點,其實是打在了正在運行的A服務器上;即使B服務器也啟動了,斷點並不屬於B服務器,
除非這個請求是請求B服務器的,斷點才會屬於B服務器;
綜上所示,設置A服務器所有斷點通過,請求A服務器,進程自然不會停留在任何A服務器的斷點上;
結論:
如果啟動了多個服務,發現斷點失效,可能是由於你設置斷點通過了;
不想去理清各個服務之間的關系,把所有的服務的斷點通過設置為不通過。