file
Linux에서 알려진 버그를 방지하려면 최신 버전의 GNU GDB를 사용해야 합니다.
참고: http://ftp.gnu.org/gnu/gdb/
또한 Linux에서 코어 파일에 대해 ulimit가 설정되어 있는지 확인합니다 (예: ulimit -c unlimited).
Linux에서는 기본적으로 코어 덤프가 오프되어 있습니다. RedHat Advanced Server 2.1에서는 코어 파일이 /etc/security에 있고 limits.conf라는 파일이 있어야 합니다. 이 파일에서 설정 사항을 확인할 수 있습니다. "core"라는 단어를 찾아보십시오. 0으로 설정되어 있으면 coredump를 사용할 수 없습니다.
참고 항목: 코어 파일 생성을 위해 검사해야 할 운영 체제 구성
다음과 같이 gdb를 사용하여 스택 트레이스를 가져옵니다(이전 과정과 동일).
$ java -version (need to use right version of jdk)
$ ls /usr/local/bin/gdb (need to know gdb location) or "which gdb"
$ export DEBUG_PROG=/usr/local/bin/gdb (or wherever "gdb" is located)
For JDK 1.3.X do the following:
$
For JDK 1.4.X do the following:
$ gdb
Now you will be in the debugger. Execute the following commands:
(gdb) where ("shows a summary of the stack")
(gdb) thr ("switch among threads or show the current thread")
(gdb) info thr ("inquire about existing threads")
(gdb) thread apply 1 bt ("apply a command to a list of threads, specifically the backtrace to thread #1")
(gdb) quit
where 명령을 사용하면 실행된 마지막 스레드의 스택 트레이스가 생성되고, thr 명령을 사용하면 현재 스레드가 표시되고, info thr 명령을 사용하면 모든 스레드의 상태가 표시되고, thread apply 1 bt 명령을 사용하면 코어 파일에 포함된 스레드 1의 스택 트레이스를 다른 방식으로 가져올 수 있습니다. 마지막 명령 thread apply # bt에서 #을 실제 스레드 번호로 바꾸어 개별 스레드의 스택 트레이스를 가져오거나 3을 "all"로 바꾸어 모든 스레드의 스택 트레이스를 가져올 수 있습니다.
댓글 없음:
댓글 쓰기