마사키군
903
2019-07-04 15:40:51
7
403

이클립스로 디버깅할때, 소스 없는 코드는 안걸리게 할 수 없을까요?


최근에 스프링 부트 올라가는 과정에 좀 관심이 생겨서, main() 메서드의 SpringApplication.run() 메서드에 중단점을 걸어두고 한줄한줄 따라가보고 있는데요 (여러번 보면 알 수 있지 않을까 하는 덧없는 희망 ToT )

중단점에서 Step Into(F5)로 진행하다 보면 Souce not found 뜨면서 소스코드를 표시해주지 못할때가 자주 있네요. F6 키 여러번 누르다보면 다시 소스코드랑 실행중인 라인 표시되니까 상관은 없는데,  이게 너무 자주 일어나다 보니 좀 귀찮아지네요.

고작 스프링 부트 웹 스타터 하나만 넣고 돌리는거라서 C 네이티브 코드 같은건 있을거 같진 않고, 아마 박싱이나 언박싱, 인터페이스를 이용한 다형성 같은 암묵적인 형변환시에 이런 일이 생기는거 아닌가 싶은데요(형변환되는 부분은 JDK의 native C로 되어있다던지, 아님 현재 실행중인 JDK의 소스코드는 임포트되어있지 않다던지 등등의 이유?). 혹시 이클립스에서 Step Into로 진행할 때 소스코드가 없는 경우에는 그냥 존재하는 소스코드 부분까지 쭉 진행하다가 소스코드가 있는 부분에서 다시 디버깅 화면을 표시해준다던지 하는 기능이 있을까요?

ps. 지금 인텔리제이를 사용하지 못하는 상황입니다만, 인텔리제이에 해당 기능이 있다면 그쪽도 알려주시면 고맙겠습니다. 어차피 개인적인 흥미로 살펴보는 거니까요 :)

0
0
  • 답변 7

  • Frudy
    4k
    2019-07-04 15:44:06 작성 2019-07-04 15:44:19 수정됨
    저도 궁금해서 와드..
    0
  • satis
    2019-07-04 15:50:48 작성 2019-07-04 15:53:48 수정됨

    step filter 기능입니다.


    Window- Preferences-Java-Debug-Step Filtering에서 등록 가능하며


    좀 더 직관적으로

    Debug모드 break 걸렸을 때 Debug 툴창에서 해당 쓰레드 우클릭 하시면 Filter Type 또는 Filter Package로 등록가능합니다.




    설정화면 하단에 Filter simple getter setter 해두시면 F5 눌렀을때 단순구조의 게터세터는 생략됩니다.


    예) sysout(dto.getName());
    F5누르면 dto의 getName으로 step into가 아닌 sysout매소드로 step into 됨.

    0
  • 제르맹
    312
    2019-07-04 15:51:24


    0
  • 북삼촌사람
    977
    2019-07-04 15:51:29

    이클립스는 사용하시는 jar의 소스 연결하시면 되고요, 인텔리J는 툴이 알아서 디컴파일 해서 소스를 보여주는 기능이 있습니다.

    0
  • 마사키군
    903
    2019-07-04 17:02:09 작성 2019-07-04 17:02:28 수정됨

    @Frudy

    앗, 오키에서도 언제부터인가 와드라는 단어가 쓰이고 있었군요 :)

    @satis , @제르맹 )

    답변 고맙습니다. 사실 두분께서 답변 주신 내용은 제가 질문드린 내용이랑은 조금 다른 내용이라는 생각이 듭니다. 제가 원했던 기능은 "디버깅 중 Step Into를 했을 때, 해당 메서드의 소스 코드가 없으면 Step Into 자체를 스킵하고 Step Over로 처리한다" 였고, 답변주신 내용은 "Step Into 기능에서 제외할 클래스나 패키지를 미리 등록해두고, 해당 패키지나 클래스로 Step Into 시도할 겨우 Step Over로 처리한다"는 의미인 것 같아요.

    하지만 필터를 적절하게 잘 등록해두면 제가 원하는 결과를 얻을 수 있을 것 같네요. 한번 살펴봐야겠네요. 고맙습니다 ( _ _)

    @북삼촌사람 )

    답변 고맙습니다. 저도 소스코드 없을때 소스코드 포함된 jar 파일을 연결해주면 된다는건 알고 있었는데요, 제가 원하는 기능은 소스코드를 연결할 필요 없이 아예 소스코드가 없는 경우에는 Step Into기능을 써도 실제로 Step Into 되지 않고, 다음 라인으로 넘어간다던지 하는 기능이었습니다.

    0
  • satis
    2019-07-04 17:22:12 작성 2019-07-04 17:22:35 수정됨

    다시 읽어보니 다른 기능을 원하시는 거군요

    into 시 소스가 없다면  over로 된다.

    F5 누르고 소스가 없으면 F7 눌러서 빠져나오는 것

    위 과정을 수행하는 기능이 필요하신 것 맞나요?


    저도 찾아보겠습니다.

    0
  • 마사키군
    903
    2019-07-05 09:21:20

    @satis )

    관심 가져주셔서 고맙습니다. 정확히는

    F5 눌러 Step Into 했을때, eclipse가 해당 메서드의 소스가 있는지를 미리 판단한 다음, 소스가 없으면 F6 Step Over 기능으로 동작하는 기능

    ...이 있는가가 궁금하다 정도 되겠네요. 저도 어제부터 계속 찾아보고는 있는데, 이런 기능은 없나봐요, 나오질 않는걸 보니 -_-)a

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.