코드 작성은 전투의 절반입니다. 여전히 올바르게 작동하도록 만들어야 합니다. IDE와 디버깅 도구는 이에 대해 많은 도움을 줍니다.
IntelliJ IDEA를 예로 들어 코드가 실행될 때 코드에 어떤 일이 발생하는지 알아내는 방법을 알아볼 것을 제안합니다. 디버그는 광범위한 주제이므로 이 리뷰에서는 다이버처럼 딥 다이빙을 제공하지 않습니다. 그러나 나는 확실히 스노클링을 희망합니다)
다음으로, 서버에서 선택한 프로젝트를 실행해야 합니다. 이 프로세스는 프로젝트 자체에서 찾을 수 있는 작은 문서에 설명되어 있습니다.
그런 다음 서버 로그에서 새 프로젝트가 어떻게 "배포"되었는지 확인할 수 있습니다.
그런 다음 해당 페이지로 이동하면 “ 회원 등록
모든 것이 정상이면 아래에 이에 대한 메시지가 표시됩니다.
찾은 소스로 이동하려면 Enter를 누르세요.
등록할 때 memberController.register가 호출되는 것을 볼 수 있는데, 분명히 이것은 일종의 Java 클래스임에 틀림없습니다. 다음을 클릭
실제로 그런 수업이 있습니다. 그것에 들어가 보자. 분명히, 등록 방법이 있어야 합니다. 클릭해서
실제로 우리는 그것을 찾았습니다. 분명히 여기, memberRegistration.register 에서 등록이 발생합니다 . Ctrl 키를 누른 채 해당 메서드를 클릭하여 "빠져 들어가"십시오.
이제 "중단점" 또는 중단점을 설정해 보겠습니다. 이는 코드 실행을 일시 중지해야 하는 위치를 알려주는 마커입니다. 이 순간 우리는 많은 흥미로운 것들을 배울 기회를 갖게 될 것입니다. 그것을 넣으려면 줄 번호 오른쪽에 있는 곳을 클릭해야 합니다.
http://localhost:8080/wildfly-hibernate4 페이지에서 필드를 입력하고 등록 버튼을 클릭하세요. 패널의 아이디어 아이콘이 깜박입니다.
Idea로 이동하면 디버그 패널에 흥미로운 정보가 많이 있는 것을 볼 수 있습니다.
여기에서 개체 필드의 값을 볼 수 있습니다. 예를 들어 등록된 회원은 다음과 같이 구성됩니다.
엄청난. 또 무엇을 할 수 있나요? 상황에 맞는 메뉴를 열고 거기서 표현식 평가를 선택합니다(또는 실행 -> 표현식 평가 메뉴를 통해). 더 좋은 점은 디버거 제어판에서 다음을 수행하는 것입니다.
이는 중단점에서 해당 코드 포인트가 액세스할 수 있는 모든 것에 액세스하고 해당 지점에서 실행될 수 있는 모든 코드를 실행할 수 있는 매우 멋진 기능입니다. 예를 들어:
디버거 제어판에는 프로그램 흐름 제어를 이동할 위치를 담당하는 제어 버튼도 있습니다. 마술 아닌가요?) F8(Step Out) 버튼을 누르면 메소드 입력 없이 코드를 따라가게 됩니다. F9 키를 누르면 디버거를 사용하여 코드 줄을 살펴보는 것을 중단하고 디버거가 프로그램 실행을 제어할 수 있게 됩니다. F7(한 단계씩 실행)을 누르면 코드를 살펴보며 도중에 만나는 각 메서드를 입력하게 됩니다. 그런데 이 정보 블록에 특별한 주의를 기울이십시오.
이는 우리가 속한 스레드와 현재 스레드의 스택에 있는 메서드를 보여줍니다. 하지만 그게 전부는 아닙니다. 편의를 위해 프레임 탭을 열 수 있습니다. 이렇게 하려면 다음을 활성화해야 합니다.
이제 프레임 탭에서 메소드 간 전환에 대한 정보를 볼 수 있습니다. Step Into를 사용하여 코드를 살펴보기 시작했습니다.
보시다시피 프로그램이 현재 실행 중인 위치로 항상 이동할 수는 없습니다. 이제 우리는 "getDelegate:469, AbstractEntityManager(org.jboss.as.jpa.container)"에 있습니다. 그러나 실제로는 구현 중입니다. 이는 다음과 같이 지정된 클래스에 의해 입증됩니다.
이것을 살펴보자. 우리가 알고 있듯이 이는 현재 개체를 가리킵니다. 우리는 TransactionScopedEntityManager에 있습니다. Idea에서 코드를 표시할 수 없는 이유는 무엇입니까? 사실 IntelliJ Idea는 현재 TransactionScopedEntityManager에 대해 알지 못합니다. 우리 프로젝트에 연결되어 있지 않습니다(프로젝트 종속성에 속하지 않습니다). 애플리케이션 서버가 실행 중일 때 그 내부에는 매우 다양한 라이브러리가 실행됩니다. 하지만 우리는 그들에 대해 아는 바가 거의 없습니다. 왜냐하면... 일반적으로 내부를 자세히 조사할 필요는 없으며 작동하는 데만 필요합니다. 그러나 때로는 일이나 스포츠에 대한 관심이 필요할 때도 있습니다. 그런 다음 클래스 코드를 어디서 얻을 수 있는지 알 수 있도록 Idea에 이 라이브러리에 대해 알려야 합니다.
이제 결과를 기다려 보겠습니다. 그는 당신을 기다리게 하지 않을 것이다)
이제 어딘가에서 소스 코드를 찾아야 합니다. 그리고 두 가지 옵션이 있습니다:
이제 종속성을 설명하겠습니다. 이 페이지에서는 소스코드를 다운로드할 수 있습니다. 좋습니다. 이제 코드를 다운로드했습니다. 남은 것은 라이브러리를 연결하는 것뿐입니다. 매우 간단하게 연결됩니다. 프로젝트 설정을 열어야 합니다.
여기서 "라이브러리"를 선택하고 수신된 소스 코드를 "소스" 섹션에 추가하고 "클래스" 섹션에서는 Far Manager를 사용하여 찾은 WildFly 디렉터리의 라이브러리 jar 파일 자체를 나타냅니다. 이후 F7을 통해 탐색하면 AbstractEntityManager 및 TransactionScopedEntityManager 클래스의 내용이 표시되며 Ctrl+N을 사용하여 클래스별로 검색을 통해서도 사용할 수 있게 됩니다.
이제 중단점은 이름이 Maximilian인 경우에만 실행됩니다. 자세히 버튼을 클릭하면 중단점에 대한 확장된 설정 세트를 사용할 수 있습니다.
선택한 예외 유형에 대한 새 규칙을 만듭니다.
예를 들어 NPE의 경우:
#비아체슬라프
소개
코드 작성의 일부는 디버깅입니다. 작업에 코드 지원이 포함되어 있으면 디버깅이 훨씬 더 많이 이루어집니다. 게다가 디버깅의 도움으로 다른 사람의 코드 정글에 빠져들 수 있는 만큼 깊이 사용된 라이브러리와 프레임워크의 작업을 검사할 수 있습니다. 다이빙을 위해서는 다음이 필요합니다:- 개발 환경: 무료 IntelliJ Idea Community Edition
- 메이븐 설치
- WildFly 애플리케이션 서버 12.0.0.최종
- 공식 예제의 소스 코드: 빠른 시작 소스 코드
bin\standalone.bat
(또는 *nix 시스템의 경우standalone.sh)을 사용하여 서버를 시작합니다. (!) --debug 매개변수로 시작하는 것이 중요합니다 . 서버가 시작될 때까지 기다립니다. 그들은 그것이 시작되었다고 우리에게 편지를 보내고 시간을 표시할 것입니다. 다음과 같이 보일 것입니다:
\hibernate4\README.adoc
이 문서에 표시된 대로 hibernate4 디렉터리에서 명령을 실행해야 합니다. mvn clean package wildfly:deploy
빌드가 성공적으로 완료되었다는 메시지를 기다리고 있습니다.
http://localhost:8080/wildfly-hibernate4
” 양식이 있는 페이지가 표시됩니다 . 이제 실험 준비가 완료되었으며 시작할 수 있습니다.)) 명확성을 위해 앞으로 많은 사진이 있을 것이므로 준비하세요)
원격 디버그
따라서 IDE가 애플리케이션 서버의 코드 실행을 제어하도록 디버그 모드를 구성해야 합니다. IntelliJ Idea는 무료(Community)와 유료(Ultimate)의 두 가지 버전으로 제공됩니다. 후자는 공식적으로 EAP 형태로 시도될 수 있습니다. Ultimate 버전에서는 모든 것이 간단합니다. 애플리케이션 서버는 디버그 모드의 IDE에서 직접 시작할 수 있습니다. 하지만 커뮤니티 버전에서는 몇 가지 작업을 수동으로 수행해야 합니다. 그러므로 좀 더 복잡한 경우, 즉 다음과 같은 경우를 생각해 봅시다. 커뮤니티 버전에서 설정합니다. Community 버전에는 몇 가지 제한 사항이 있습니다. 특히, 여기에서는 애플리케이션 서버를 실행할 수 없습니다. 그러나 필요한 애플리케이션이 포함된 실행 중인 서버가 별도로 어딘가에 있는 경우 원격 디버깅(원격 디버그)을 설정할 수 있습니다. IntelliJ Idea 커뮤니티 에디션의 원격 디버그 Wildfly (포트 8787에 대한 원격 실행 구성 설정) 의 설정 설명을 사용해 보겠습니다 . 구성 후에는 디버그 모드에서 새 구성을 시작합니다.디버그 프로세스
레코드 저장을 디버그해 보겠습니다. 그러기 위해서는 먼저 탐색할 장소를 결정해야 합니다. 창으로 판단하면 "등록"버튼이 필요합니다. 코드에서 찾아보자. 따라서 요소가 필요합니다. 여기에는 "Register"라는 텍스트가 있어야 합니다. 아니면 그녀가 그것과 관련이 있어야합니다. 따옴표에 등록을 클릭Ctrl+Shift+F
하고 찾아보세요. index.xhtml에 하나가 있다는 것을 알 수 있습니다.
Ctrl+N
하고 검색하세요.
Ctrl+F12
등록방법을 찾아보세요
디버깅을 위해 타사 라이브러리 연결
먼저, 우리 자신이 연결해야 할 라이브러리가 어떤 종류인지 이해해야 합니다. 첫 번째 방법은 가장 어려운 방법입니다. 인터넷에서 검색하는 것입니다. 결과를 찾는 속도와 결과는 프로젝트가 얼마나 잘 관리되었는지에 따라 크게 달라집니다. 예를 들어 WildFly에는 공개 저장소가 있습니다. 따라서 Google "TransactionScopedEntityManager"를 사용하면 https://github.com/wildfly/wildfly/tree/master/jpa/subsystem 으로 이동하여 wildfly-jpa가 필요하다는 것을 알게 됩니다. 두 번째 방법 이 맞습니다. 서버가 어디에 있는지 살펴보세요. 이를 위해서는 다양한 수단이 도움이 될 수 있습니다. 예를 들어 Windows에서는 Far Manager 일 수 있습니다 . 아래는 검색 알고리즘의 예입니다. 설치하고 실행한 후 Tab을Alt+F1
사용하여 왼쪽 탭이나 Alt+F2
오른쪽 탭을 사용하여 탭 중 하나로 전환하고 하드 드라이브에 필요한 파티션을 선택합니다. 설치 후 Far Manager 디렉터리 자체가 Far Manager에서 열릴 가능성이 높습니다. 디스크의 루트로 이동하려면 키를 누릅니다 Ctrl + \
. 사용하여 Alt+F
검색 창을 열고 디렉토리 이름을 입력하기 시작한 다음 디렉토리를 찾은 후 Enter를 누르십시오. 이 검색은 영리하며 검색 텍스트와 일치하는 디렉터리를 강조 표시합니다. 폴더가 없는 문자를 입력하면 해당 문자는 입력할 수 없습니다. 이 방법으로 애플리케이션 서버 디렉토리로 이동합니다. 서버에서 모듈이 어디에 있는지 모른다고 가정해 보겠습니다. 아마도 이것은 일종의 WildFly에 대해 듣는 것이 인생에서 처음일 것입니다. 따라서 바로 여기를 클릭하여 Alt+F7
파일을 검색하세요. 따라서 논리에 따르면 라이브러리가 포함된 파일이 필요합니다. 즉, 항아리가 필요합니다. 내부에 TransactionScopedEntityManager 클래스가 있어야 합니다. 왜냐하면 class = file, 그런 다음 "contains"를 찾으세요. 즉, 다음과 같습니다.
- 매우 유용한 versioneye.com
- 중앙 메이븐 저장소
GO TO FULL VERSION