2014-04-18 1 views
1

저는 약 1 년 동안 자바 기술에서 일하는 C++ 개발자입니다. 내 무지를 용서하지만 다음 두 가지 질문을 찾으려고 노력했습니다. Java 응용 프로그램의 콘솔에서 디버깅하는 가장 좋은 방법은 무엇입니까 (ala gdb in good ol 'C++).
콘솔에서 자바 프레임 워크를 디버그하는 방법

  1. jdb가 아래에있는 것 같습니다.
  2. Eclipse는 IDE를 사용하는 방법입니다. 하지만 이클립스는 GUI이고 나는 유닉스 서버에서 콘솔로 개발한다. 거대한 jave 오픈 소스 프레임 워크를 길들인 가장 좋은 방법은 무엇입니까? 예 : 낙타, 동면, 봄, 로그백, ㅋ, blah
+0

불행히도 디버깅 할 방법이 없습니다. system.out 문을 넣을 수 있습니다. – niiraj874u

답변

1

대부분의 디버깅은 콘솔에서 수행합니다.

대부분의 버그에 대해 Java 스택 추적으로 버그를 식별하고 수정 사항을 개발할 수 있음을 알았습니다. 이것은 물론 스택 트레이스를 콘솔에 표시하는 것이 중요하다는 것을 의미합니다. 대부분의 어플리케이션에서, 체크되지 않은 예외가 콘솔에서 스택 트레이스와 함께 스레드를 종료 할 때까지 전파되도록하는 것이 가장 좋습니다. 검사되지 않은 예외는 일반적으로 스레드가 어쨌든 종료되어야하는 프로그래밍 오류 또는 제어 할 수없는 조건을 나타냅니다.

스택 추적이 충분하지 않은 경우 디버깅 프로세스 중에 System.out.println()을 사용하면 실제로 대화 형 디버거를 사용하는 것보다 효과적이라는 것을 발견했습니다. 실행에 대한 전체 로그를 얻는 것이 나에게 도움이된다. 디버거를 실행하는 것보다 더 유용하다.

+0

의견을 보내 주셔서 감사합니다.
하지만 예외보고가 더 많이 생성되어 예외가 생성됩니다. 제 질문은 지식을 얻기 위해 프레임 워크를 디버깅하는 것입니다. 그 끔찍한 문제에 대한 연령대에 구글을 좌절시키고 프레임 워크가 오픈 소스 일 때 블랙 박스로 취급한다. 나는 핵심 이점을 잃어 가고있다. – everCurious

+0

나는 throw하는 코드를 작성하는 예외는 거의 없다고 생각하고 있으며 NullPointerException 및 IndexOutOfBoundsException과 같이 오류가 발생할 경우 자동으로 throw되는 예외에 대해 자세히 설명합니다.당연히, 당신이 정보 검색을 위해 보낸 세월이 흘러 드는 사소한 겉으로 드러나는 문제점이 어떤 것인지 잘 모르겠습니다. 예를 들어 줄 수 있습니까? –

+0

하나의 문제는 스프링을 사용하여 속성을 구성하는 것이 었습니다. 웹 기사에 정교한 여러 가지 방법이있었습니다. 기사는 봄 버전이 다른시기에 작성되었습니다. 제안 된 솔루션 중 일부는 작동하지 않았습니다. 디버깅 도구에 액세스 할 수 있다면 쉽게 소스를 찾아 지능적으로 해결할 수있었습니다. – everCurious

0

와트는 Eclipse IDE에서 프로젝트를 설정하는 데 문제가 있습니다. 항상 소스 코드를 가져 와서 작업 영역을 설정할 수 있습니까 ??

sysout을 사용하면 작은 Java 프로그램에 적합하지만 코드가 커지거나 큰 응용 프로그램 (내 이해에 따라 큰 것을 디버깅 할 계획 : P)으로 인해 모든 sysout을 배치 한 다음 한 번 제거하면 당신은 디버깅이 끝났습니다. IDE의 '기존 프로젝트 가져 오기'옵션을 선택하여 자신의 작업 공간을 설정하는 것이 좋습니다. 처음에는 피곤하지만 장기적으로는 도움이 될 것입니다.

+0

고마워요 @BaZzOoKa, 그래서 내가 자바를 코딩 env 같은 C + +를 사용할 수있는 방법은 없습니다? ctags를 사용하는 것처럼, cscope et al? – everCurious

0

Java는 원격 디버깅을 지원하므로 그러한 도구가 필요 없다고 말할 수 있습니다.
당신은 활성화 원격 디버깅으로 (서버) JVM를 시작해야합니다 -이 최신의 JDK에 대한 작동합니다 : 당신이 IDE에서 연결할 그 후

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005 

을, 그리고 당신이 원하는 위치 브레이크 포인트 또는 조건부 중단 점을 설정합니다.

See this question for more details

또한, 이것은 개인적인 취향이지만, 나는하게 IntelliJ IDEA는 지금까지 자바 IDE를 가야로 갈 수있는 방법이라고 말할 것입니다.

+0

답변 해 주셔서 감사합니다. 내 질문은 C++에서 Java로 마이그레이션하는 누군가에게 의미가있다. C++에서, gdb (콘솔 기반)는 저장소를 관리합니다. 그리고 디버깅 할 IDE를 설치하지 않아도된다는 즐거움이 있습니다. IDE 설치는 선택 사항이어야합니다 (개발을 위해 주로). Java와 같은 성숙하고 안정적인 플랫폼에서 디버깅을하려면 디버거가 독립적 인 구성 요소이고 IDE와 통합되지 않는다고 가정합니다. 또한 JDB는 그러한 시도이지만 GDB와는 비교할 때 비참하다고 생각합니다. – everCurious