Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java访问局部变量名_Java_Debugging_Jdi_Jpda - Fatal编程技术网

Java访问局部变量名

Java访问局部变量名,java,debugging,jdi,jpda,Java,Debugging,Jdi,Jpda,我目前正在编写一个程序,我想在程序执行期间访问局部变量的变量名,并将它们传递给外部。我知道Java将在编译期间转储局部变量名,除非在调试模式下编译 环顾四周,JDI/JPDA似乎是这类工作的发展方向。假设ref指的是ThreadReference,那么到目前为止,我已经掌握了以下内容: ref.suspend(); StackFrame currentFrame = ref.frame(0); List<LocalVariable> vars = currentFrame.visib

我目前正在编写一个程序,我想在程序执行期间访问局部变量的变量名,并将它们传递给外部。我知道Java将在编译期间转储局部变量名,除非在调试模式下编译

环顾四周,JDI/JPDA似乎是这类工作的发展方向。假设
ref
指的是
ThreadReference
,那么到目前为止,我已经掌握了以下内容:

ref.suspend();
StackFrame currentFrame = ref.frame(0);
List<LocalVariable> vars = currentFrame.visibleVariables();
ref.resume();
ref.suspend();
StackFrame currentFrame=参考帧(0);
List vars=currentFrame.visibleVariables();
参考简历();
两个问题:

  • 我是走对了路,还是有更好的方法
  • 如何获取要设置为
    ref
    ThreadReference
    ?这似乎是我所需要的,但有人能提供一个如何使用它的例子吗

  • 非常感谢

    没有多少人有这方面的经验


    在别处寻找答案。我有代码链接,但它们不再是。无法删除此答案,因为它已被接受。

    是的,您的回答正确

    对于任何想开始使用JDI的人来说,“跟踪”示例是非常宝贵的:


    它是一个可用的主干。它向您展示了如何使用事件,这确实会给您一个线程引用。它还向您展示了如何以编程方式启动第二个JVM。

    为什么,为什么?查询正在运行的方法的局部变量名有什么可能的原因?调试工具-我想将变量传递给Lisp的REPL,以便进行进一步的计算/操作。这里更简单,但是如果用户传入许多变量,他们需要指定所有这些变量的名称,或者在REPL中处理不同的变量名称。可能是@souparnomajumder的重复事实上,我认为这篇文章是这篇文章的重复,因为这篇更早。答案应该贴在这里,那个答案作为副本关闭。@cryptic_star,是的,这篇文章应该是重复的,但是被接受的答案丢失了链接。因此,合并请求看起来是我将得到的最好的…:)谢谢你提供的信息,但是我发现JDPA文档非常混乱。看起来链接断了,你能修复它吗@罗曼