kan*_*and 8 java eclipse debugging breakpoints decompiler
我试图在反编译代码中设置一个条件断点,但Eclipse不断给我错误:
条件断点有编译错误
原因:评估必须包含表达式或格式良好的语句块
我的情况非常简单,只是尝试与字符串值进行比较.我已经尝试了以下所有内容,但每个单独出错都会出错:
myObj.toString() == "abc123"
myObj.toString().equals("abc123")
if(myObj.toString() == "abc123"){ return true; }
true == true
Run Code Online (Sandbox Code Playgroud)
我也尝试过在行尾添加或不使用分号的每种组合,以及间距和换行符的每种组合以及包含或不包含{}的每种组合.基本上,我不知道为什么这不起作用......
我试图调试的代码是在一个用JD-Eclipse反编译的jar中.正常断点在此代码中正常工作.
有谁知道这里发生了什么?
此Eclipse FAQ页面包含正确 CBP 定义的语法以及它们不起作用的最常见原因。对于你的情况,我认为以下内容适用:
如果您在类文件中不包含局部变量表的类中设置断点,则可能会发生这种情况。例如,假设您要在 Class.forName(String) 上设置条件断点。如果您有 rt.jar 的源附件,内容辅助将允许您通过变量名称 className 引用参数。但是,在调试运行时,只有在类文件包含局部变量表时才知道变量名称。根据编译时使用的选项,此信息可能已从类文件中删除。
JD 可能在反编译 jar 时伪造了变量名称,因此在条件表达式中使用“myObj”会产生编译时错误。