2012-10-11 3 views
2

OS X Lion의 명령 줄에서 OpenJDK 7을 사용하면 jdb을 사용하여 JNI 기본 코드로 인해 32 비트 JVM에서 실행해야하는 응용 프로그램을 디버깅 할 수 있습니까?32 비트 모드에서 Java 응용 프로그램 디버그

javajava -d32으로 호출 할 수 있으며 32 비트 JVM을 사용합니다. 또한 -d32 플래그를 오류없이 jdb에 전달할 수는 있지만 효과가없는 것 같습니다. 응용 프로그램이 원시 코드를 연결하려고 시도 할 때 여전히 동일한 오류 메시지가 표시됩니다. 전달 -J-d32 동일한 동작을 보여줍니다.

+0

jdb에 디버깅중인 프로세스의 32/64 비트 니스를 알릴 필요가 없습니다. IDE를 사용하면 훨씬 간단하게 디버깅을 할 수 있습니다. 'Run' 버튼 대신'Debug' 버튼을 누르기 만하면됩니다. –

+0

@ PeterLawrey, jdb가 디버깅 프로세스를 시작하면 그 프로세스에 비트를 알리는 사람이 아무도 없습니다. 그리고 나는 IDE를 진정한 대안으로 여기기에는 너무 많은 커맨드 라인 사용자입니다. – MvG

+0

명령 줄에서 수행 할 수있는 대부분의 작업은 IDE에서 한 번의 클릭으로 수행됩니다. IDE에 익숙해지면 왜 그렇게 빨리하지 않았는지 궁금해 할 정도로 많은 시간을 절약 할 수 있습니다. ;) –

답변

1

javajdb을 두 개의 다른 터미널 창과 별도의 프로세스로 시작하여 위와 같이 구현할 수 있습니다. 따라서, 별도의 창에서 각각 다음 명령을 실행합니다

java -d32 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=127.0.0.1:5463 -classpath . MainClass 
jdb -attach 127.0.0.1:5463 

응용 프로그램에 대한 JVM을 시작하지만 정지됩니다 첫 번째 즉시 생성 후. 두 번째는 디버거를 시작하고 방금 만든 JVm에 연결합니다. 그런 다음 두 번째 창에 run을 입력하여 응용 프로그램을 시작할 수 있습니다. 추가 보너스로, 응용 프로그램과 디버거의 출력은 각각 고유 한 창이 있으므로 혼합되지 않습니다.

참고 :jdb help 목록 가능한 명령 행 인수 및 JPDAsection on transports 있습니다.

위의 내용이 저에게 효과적 일지 모르지만 더 쉬운 솔루션을 제공하고 다른 포트리스 번호를 임의로 선택할 필요가없는 다른 대답을 환영합니다. 공유 메모리 커넥터가 my JVM에서 작동하지 않는 것 같습니다.

관련 문제