목차

BTrace

Tomcat에서 실행시 어디서 getSession을 호출하는지 찍어보는 예

import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;
import static com.sun.btrace.BTraceUtils.Sys.*;
 
@BTrace
public class SessionCheck {
 
    @OnMethod(
            clazz="org.apache.catalina.connector.Request",
            method="getSession"
            )
    public static void showSessionRequest() {
        println("######################################################");
        jstack();
        println("$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$");
    }
}

JVM의 PID를 확인한 뒤에

btrace [JVMPID] SessionCheck.java

참조

Redhat(Centos) 에서 이상 현상

Readhat(Centos) 6.4에서 다음과 같은 오류를 내며 btrace가 실행이 안됐다.

Invalid path <pid> specified: 2/No such file or directory

/usr/bin/btrace가 존재하기 때문이며 실제로는 blktrace라는 다른 프로그램을 실행시킨다. 따라서 $BTRACE_HOME/bin/btrace 명령을 명시적으로 실행할 것.