【发布时间】:2011-03-21 09:47:33
【问题描述】:
出于调试目的,我需要更改私有字段的值。 我使用 Eclipse 进行调试,我可以在调试过程中更改变量,但我无法访问私有变量。我尝试在更改值视图中使用反射来手动将字段设置为“可访问”,但看起来它不起作用。 你知道任何 IDE/框架/插件或可以允许它的东西吗?
【问题讨论】:
-
根据我的经验,只要调试器位于正确的堆栈框架中,我就设法更改了任何成员的值。你能提供更多关于你如何调试的细节吗?
-
好吧,也许我对问题的描述不完整。例如,我有一个“数据”类的对象“数据”,其私有字段名为“mappy”。 “mappy”包含对象的映射。例如,我需要在其中插入一个附加值。在“更改值”窗口中,我可以在代码中创建新地图,用新值填充它,但我可以
t get existing map or run any its 方法(放置或其他东西)。我找不到获取“data.mappy”对象的方法,尽管我可以使用“public”修饰符获取字段。 -
我不明白您希望在程序在断点处停止时“运行”某些对象的方法。你认为谁会执行 put() 调用?您能做的最好的事情就是回溯一点,如果 IDE 允许,重新运行一些代码。
-
为什么不能在运行代码中添加额外的某种 NOP 指令,这样程序就可以站在断点上,而 JVM 可以同时执行我的 put() 或其他东西?我在这里找不到任何技术问题。
-
它不仅留有一些内存空间作为备用,供您添加/注入更多代码(在某些情况下这样做,例如用于分析的仪器)。你还想调用函数;这意味着会弄乱堆栈,因此一些额外的 NOOP 字节对您没有帮助。我建议退后一步,这样您就可以找到代码的真正问题所在。也许然后提出一个新问题,以便我们提供帮助?
标签: java debugging private field