有这样一个需求:
当程序崩溃抛出异常的时候,想把调用堆栈中的变量值都答应出来,方便查找错误。不知道eclipse调试的时候,是怎么做到查看变量值的?在晚上搜索了半天都没有满意的结果,希望高手能够给个方案,或者是一个思路就行!谢谢!!

解决方案 »

  1.   

    估计是直接调用jvm的吧
    不过程序崩溃抛出异常,已经退出了,不可能再去访问堆栈了
      

  2.   

    用e.printStackTrace();如果你是说你程序中的用到的堆栈,可以在finally{}块中把堆栈的内容输出来。
      

  3.   

      StackTrace ss = new StackTrace(true);
                String flName = ss.GetFrame(1).GetFileName();// GetMethod().DeclaringType;
                int lineNo = ss.GetFrame(1).GetFileLineNumber();
                String methodName = ss.GetFrame(1).GetMethod().Name;
    这是 C# 的调用栈上的内容, 至于具体变量值,不清楚....
     java 中也有一个,StackTraceElement calledSte = getCallStackTraceElement();
    int lineNo = calledSte.getLineNumber();
    String className = calledSte.getClassName();
    String methodName = calledSte.getMethodName();
      

  4.   

    堆栈你都得到了, 还搞出来?
    String var = "Hello World";
    new Exception(var);StackTraceElement[] elements =  e.getStackTrace();
    e.getMessage();  // 变量var的值
    for (int i = 0; i < elements.length; i++){
        StackTraceElement element = elements[i];
        element.getClassName();
        element.getLineNumber();
        element.getMethodName();
        element.toString();
    }
    这些不是可以操作了吗, 楼上有个朋友已经说了吗
      

  5.   

    我学C#的,在vs2005的开发环境中设断点,可以使用单步执行,每执行一步看一下局部变量就可以了!在eclipse中也能这样执行的, 好像有个叫 什么debug的就是
      

  6.   

    to yejinson,这位朋友没有理解我的意思吧。我再详细说一下需求。
    比如一段代码
    class C {
    int i;
    void A() {}
    }
    //另外一段调用代码
    try {
    C c = new C();
    c.A();
    }
    catch(Excetion e) {
    //如何在这里获取到变量c的值
    }
      

  7.   

    用断点,然后单步靠近异常抛出点,就可以读debug视图中的变量值了。
      

  8.   

    试试用log来获取运行程序的信息