我试图将断点放入GoogleAppEngine源代码(SDK 1.7.0),但IDEA Ultimate(11.0.2)只是告诉我Warning: No executable code found at line 482 in class com.google.appengine.api.memcache.AsyncMemcacheServiceImpl
。
当我从单元测试中运行代码并启动开发服务器时,我收到此错误消息。
这很烦人。无论如何,我的源代码位于外部(相对于IDEA主目录和项目主目录)目录,我的jar文件位于App Engine SDK lib目录下。
我的jar文件作为项目库添加到模块中,我的源文件附加到此库。我也在玩模块依赖,但没有任何运气。最后我决定把这个库放到Compile范围内,但这是一个坏主意,因为SDK在运行时提供了这些jar,所以我决定回到提供范围。
我还使用了模块依赖项选项卡上的导出复选框,但我认为这是无关紧要的,根据web help,只有当您拥有依赖模块并且您希望在这些模块中使您的库可用时,导出才是重要的。
无论如何,这个问题也出现了4 years ago。所以我现在想知道解决这个问题是否真的很难?
我现在非常失望。到目前为止我对IDEA没有任何问题......我也看到了这个问题arised to other people,所以这不是我想的独特。
任何帮助表示赞赏。
由于我在下面的javap
实验,我编辑了我的问题:似乎类和源不是不同步的。我查看了SVN的1.7.0相关版本,我使用的是1.7.0 SDK,所以这些版本根本不应该是不同步的。
我遇到了类似的问题,并且已经进行了各种尝试。以下是我通常的步骤:
在此之后,通常它涵盖了99%的问题。否则,您可能需要检查一些其他可能性。
菜单 - >文件 - >无效缓存/重启
这在IntelliJ 13.0.2下适用于我
如果您正在使用某些服务器,它们将进入“低内存模式”,这意味着无论您使用哪种选项或缓存,它们都不会为您调试。
您应该停止服务器,增加传递给java的选项的内存设置并重新启动服务器。检查日志以确保您不会收到“以低内存模式运行”等报告。
有同样的问题,发现服务器上的代码版本和我正在调试的代码版本是不同的。同步代码后问题得到解决。
在我的情况下,我杀死了设备上的所有正在运行的进程,并断开连接并重新连接它。
我在Tomcat中使用调试配置时遇到了同样的问题。我尝试了以上所有,但没有。当我刚刚重新配置Tomcat(调试>编辑配置>删除tomcat>从头再次添加它)它终于工作了:)
检查您的磁盘空间并释放一些内存。如果您的磁盘空间不足,即使您的服务器没有处于“低内存模式”,IntelliJ也不会分配空间来缓存调试所需的类。因此,它不允许您设置断点。
我正在研究一个Intellij插件,当沙盒Intellij弹出时,最终解决了我的问题是,一旦沙箱intellij弹出,我就从那里重建了。
之后,我构建了我的Intellij和沙盒Intellij,最终他们同步了。
重新启动电脑。它解决了我的情况。简单是最好的..
我在intellij中调试时遇到了类似的问题。我无法在其中一个代码片段中放置断点,然后我更改了代码的行号,之后我就可以放置断点了。看起来像intellij中的错误或一些缓存问题。
我发现了一些其他人报告IDEA说“没有找到可执行代码”的案例。一种常见的模式是他们试图调试没有调试信息的代码。检查您是否使用“-g”标志(或等效)集进行编译。
问题的实质是JVM执行一个类文件(简单类或从类路径从jar加载的类),它与调试器使用的源不匹配。理解之后,解决方案很简单:确保源代表正在执行的类。因此,要解决问题,您可以刷新 - 将源同步到类等。
这个问题相当陈旧,但我认为我的经历可能有助于未来的某些人。在我的情况下,我试图调试未使用调试信息编译的代码。我正在使用maven,其中修改前的原始父pom文件在构建部分中看起来如下所示。
<build>
<pluginManagement>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration>
<target>${javaCompilerVersion}</target>
<source>${javaCompilerVersion}</source>
<encoding>UTF-8</encoding>
</configuration>
</plugin>
<!--More plugins...-->
</pluginManagement>
</build>
我改变了上面的部分使它看起来像下面。
<build>
<pluginManagement>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.1</version>
<configuration>
<target>${javaCompilerVersion}</target>
<source>${javaCompilerVersion}</source>
<encoding>UTF-8</encoding>
<debug>true</debug>
<debuglevel>lines,vars,source</debuglevel>
</configuration>
</plugin>
<!--More plugins...-->
</pluginManagement>
</build>
请注意添加的<debug>
和<debuglevel>
元素。 debuglevel元素可以使用逗号分隔的三个参数的任意组合。
在编译完这个改变后,我终于设法在IDEA中设置了断点。
我能够通过重新编译有问题的类来解决这个问题:Build - > Recompile(filename.java)
我有同样的问题。我不知道为什么,但对我来说有助于在代码中添加任何修改,例如添加或删除注释。奇怪,但它解决了我的问题
我有一个类似的问题,它是由我的Tomcat配置中的错误引起的,在Deployment选项卡下,“在服务器启动时部署”。我不小心把它变成了一个非常类似的项目,“:战争爆炸”。当我把它改回来时,它工作得很好。
请确保您没有运行Proguard。它帮助了我。