0
public class LineNum1 extends Thread{

    public synchronized void run()
         {
          try {
                Hello.main(null);
                System.out.println("Stack Trace of thread"+ this.currentThread().getName());
                System.out.println(this.currentThread().getStackTrace()[1].getLineNumber());
                System.out.println("End of Stack Trace");
               } catch (Exception e1) {
                    e1.printStackTrace();
               }
            }

     public static void main(String[] args) {

                LineNum1 t = new LineNum1();
                t.start();
            }
   }

我正在开发一个代码覆盖工具。

使用上面的程序,我从这里执行 Hello.java。有什么方法可以让我控制 Hello.java 吗?

或者为了让我的生活更简单,我可以获得 Hello.java 的执行行(执行路径)的行号吗?

4

3 回答 3

2

您想使用 Java 调试接口。它是用于编写调试器等 Java 工具的 Java 库。它可以让你逐步完成程序,查询行号和你去的东西。

有一个名为 trace 的简单演示应用程序可以完成您想要的大部分工作:http: //docs.oracle.com/javase/1.5.0/docs/guide/jpda/trace.html

如果您有时间阅读它,有很多文档:http: //docs.oracle.com/javase/1.5.0/docs/guide/jpda/index.html

于 2012-09-04T05:55:17.520 回答
1

您可能可以将第二个 Java 类作为 a 执行Process并自己读取输出。

于 2012-09-04T04:46:39.007 回答
0

我还没有完全完成代码覆盖。但是我已经使用字节码检测来检测方法,因此我得到了我访问过的所有方法的日志。这个Javassist 教程可能会对您有所帮助。

于 2012-09-17T06:18:36.917 回答