[讨论] 关于Btrace的问题

miroku 2013-08-20
最近在使用btrace的时候,老是无法成功,查了资料试了各种办法都没解决,只好在这里发一帖问一下了。

btrace 版本: 1.2.2

java   版本: java version "1.6.0_29"
              Java(TM) SE Runtime Environment (build 1.6.0_29-b11)
              Java HotSpot(TM) 64-Bit Server VM (build 20.4-b02, mixed mode

btrace脚本 :

   
#! /bin/sh

export JAVA_HOME="/data/jdk1.6.0_29/"
if [ -z "$BTRACE_HOME" -o ! -d "$BTRACE_HOME" ] ; then
  # resolve links - $0 could be a link to btrace's home
  PRG="$0"
  progname=`basename "$0"`
  BTRACE_HOME=`dirname "$PRG"`/..
  BTRACE_HOME=`cd "$BTRACE_HOME" && pwd`
fi

if [ -f "${BTRACE_HOME}/build/btrace-client.jar" ] ; then
    if [ "${JAVA_HOME}" != "" ]; then
       case "`uname`" in
          Darwin*)
              # In Mac OS X, tools.jar is classes.jar and is kept in a 
              # different location. Check if we can locate classes.jar
              # based on ${JAVA_VERSION}
              TOOLS_JAR="/System/Library/Frameworks/JavaVM.framework/Versions/${JAVA_VERSION}/Classes/classes.jar"

              # if we can't find, try relative path from ${JAVA_HOME}. Usually,
              # /System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home
              # is JAVA_HOME. (or whatever version beyond 1.6.0!)
              if [ ! -f ${TOOLS_JAR} ] ; then
                  TOOLS_JAR="${JAVA_HOME}/../Classes/classes.jar"
              fi

              # If we still can't find, tell the user to set JAVA_VERSION.
              # This way, we can avoid zip file errors from the agent side
              # and "connection refused" message from client.
              if [ ! -f ${TOOLS_JAR} ] ; then
                  echo "Please set JAVA_VERSION to the target java version"
                  exit 1
              fi
          ;;
          *)
              TOOLS_JAR="${JAVA_HOME}/lib/tools.jar"
          ;;
       esac
       ${JAVA_HOME}/bin/java -Dcom.sun.btrace.probeDescPath=. -Dcom.sun.btrace.dumpClasses=true -Dcom.sun.btrace.debug=true -Dcom.su
n.btrace.unsafe=false -cp ${BTRACE_HOME}/build/btrace-client.jar:${TOOLS_JAR}:/usr/share/lib/java/dtrace.jar com.sun.btrace.client.M
ain $*
    else
       echo "Please set JAVA_HOME before running this script"
       exit 1
    fi
else
    echo "Please set BTRACE_HOME before running this script"
    exit 1
fi
    
执行之后,btrace控制台打印的信息

DEBUG: btrace debug mode is set
DEBUG: dumpClasses flag is set
DEBUG: dumpDir is .
DEBUG: assuming default port 2020
DEBUG: assuming default classpath '.'
DEBUG: compiling ThreadCounter.java
DEBUG: compiled ThreadCounter.java
DEBUG: attaching to 15885
DEBUG: checking port availability: 2020
DEBUG: attached to 15885
DEBUG: loading /root/reg/btrace/build/btrace-agent.jar
DEBUG: agent args: port=2020,debug=true,dumpClasses=true,dumpDir=.,systemClassPath=/data/jdk1.6.0_29/lib/tools.jar,probeDescPath=.
Agent JAR not found or no Agent-Class attribute


请各位支招
RednaxelaFX 2013-08-20
楼主之前怀疑是不是用户权限的问题,试过用同用户+sudo来执行了不?

另外你的btrace是不是自己打包的版本?能不能手工打开btrace-agent.jar看看里面的MANIFEST到底对不对?
miroku 2013-08-20
换成了root用户也是同样的问题,btrace是下的官方版本,不是自己打的
RednaxelaFX 2013-08-20
系统环境是什么?Linux x64?
miroku 2013-08-20
是的  linux x64
shigangxing 2013-12-17
@miroku  求关注 http://hllvm.group.iteye.com/group/topic/39188
a511596982 2014-08-15
在export JAVA_HOME="/data/jdk1.6.0_29/" 
下面加一条
export BTRACE_HOME=you_btrace_home
Global site tag (gtag.js) - Google Analytics