为啥在调试模式下启动 GWT 时,我的断点不会中断

Posted

技术标签:

【中文标题】为啥在调试模式下启动 GWT 时,我的断点不会中断【英文标题】:Why when starting GWT in debug mode, my break points don't break为什么在调试模式下启动 GWT 时,我的断点不会中断 【发布时间】:2010-10-31 22:23:45 【问题描述】:

我正在使用带有最新 GWT 的 Eclipse 3.4.2。 IDE 甚至不会自动切换到 Debug Perspective。

【问题讨论】:

提供更多信息会不会很痛苦??? 实际上,我只是在尝试 GWT 教程中的 StockWatcher 示例。它与运行和调试完美运行。但是,它不会在调试模式下中断。我测试了运行纯 Hello World 类型的 Java 应用程序。我设置断点没有问题。我的 Google eclipse 插件版本是否可能对于 eclipse 来说太旧了?但是,我刚刚从两者下载了最新的。 也有同样的问题。我正在使用 Eclipse Juno 版本 4.2.0 和 JDK 1.7.0_13。两者都是今天下载的,我在同一个示例应用程序中被困在完全相同的位置。我使用的是 Windows 7 64 位。 也有同样的问题。我调试的时间最长。现在,在没有 JDK 或 GWT 更改之后,它不会在断点处停止。 很高兴知道我不是唯一一个。 Java 1.7.0_25-b17 和 GWT 2.3(本项目需要使用旧版本) 【参考方案1】:

您是否在hosted mode 中启动您的 GWT 应用程序?

您将花费大部分开发时间在托管模式下运行您的应用程序,这意味着您正在与您的 GWT 应用程序进行交互而没有将其转换为 JavaScript。 每当您从 Java 集成开发环境 (IDE) 编辑、运行和调试应用程序时,您都是在托管模式下工作。 当应用程序在托管模式下运行时,Java 虚拟机 (JVM) 实际上将应用程序代码作为编译后的 Java 字节码执行,并使用 GWT 管道来自动化嵌入式浏览器窗口。 这意味着您的 IDE 的调试工具可用于调试您的客户端 GWT 代码和任何服务器端 Java 代码。


提示:如果您使用的是 Eclipse,您还可以在使用 applicationCreator 使用 -eclipse 标志创建新项目时创建启动配置文件。

如果您没有使用applicationCreator 创建特定于应用程序的托管模式shell 脚本,您可以手动运行com.google.gwt.dev.GWTShell 中的主类(取决于您的操作系统)在gwt-dev-windows.jargwt-dev-linux.jar、或gwt-dev-mac.jar

重要提示:如果您不使用生成的<module>-shell 脚本,请注意在托管模式下,GWT 开发外壳会使用 JVM 的类路径查找模块(并因此查找客户端源代码)。确保首先在类路径中添加源目录。


另见Debug in Hosted Mode

(来源:googlecode.com)

【讨论】:

【参考方案2】:

我还关注GWT 网站上的StockWatcher 指南,然后进入教程的Debugging 部分,我可以触发断点,直到我偶然发现SDBG 插件。我安装了插件并按照视频进行了操作!

我的环境:

Eclipse Neon.1a 版本 (4.6.1) JDK 1.7.0_80 GWT SDK 2.7.0

补充说明:

确保进行 Debug 配置并使用 com.google.gwt.dev.DevMode 作为您的 Main 类。

【讨论】:

【参考方案3】:

这些天,似乎不再支持 GWT 经典开发模式,或者至少 not recommended。它已被 GWT 超级开发模式所取代,该模式在 javascript 中运行您的代码,而不是在 JVM 上。这意味着您调试in your browser,而不是在Eclipse 中。例如,我在 Chrome 中访问了我的网站,打开了开发者工具,切换到源选项卡,然后在 sourcemaps 文件夹下查找我所有的 Java 类。我可以在那里设置断点,当 Javascript 等价物运行时,浏览器将停止。我可以检查与我的 Java 变量大致匹配的 Javascript 变量。

如果您真的更喜欢在 Eclipse 中进行调试,您可以使用Super Dev Mode Debugger Eclipse plugin,但它的作用与 Chrome 调试器相同。当我尝试它时,我必须观看视频才能让它发挥作用。

【讨论】:

【参考方案4】:

我遇到了同样的问题。就我而言,问题在于我使用的是 JRE 而不是 JDK。设置 JDK 而不是 JRE,解决了我的问题。我建议查看构建配置以查看正在使用的配置。

【讨论】:

仅供参考以更改为 JDK 我必须通过Window : Preferences : Java : Installed JREs : Add ...添加它【参考方案5】:

更改 JDK 对我的情况没有帮助,但我终于发现了问题所在。

从 GWT 1.7 迁移到 2.0 时,旧的 GWT 类将保留在战争输出中。必须手动删除它们才能启动 2.0。

【讨论】:

【参考方案6】:

升级到 jdk1.6.0_17 - 工作正常

【讨论】:

【参考方案7】:

同时确认调试器不适用于 1.6.0_14。降级到 1.6.0_13 解决了我的问题。 Farinha,即使您已安装 1.6.0_13,您的 java_home(或类似的东西)是否仍指向安装 1.6.0_14?

【讨论】:

【参考方案8】:

我正在运行 1.6.0_13,但调试仍然无法正常工作。它只是没有达到断点。 此外,页面在托管模式下显示为空白(html 文件中的静态内容除外),但在浏览器上运行时一切正常显示和工作。

java -版本 java版本“1.6.0_13” Java(TM) SE 运行时环境(build 1.6.0_13-b03)

【讨论】:

【参考方案9】:

我想确认,基本上,JDK 1.6.0_14 在 Eclipse 调试模式下无法与 GWT 一起使用。切换不同的 JDK 即可。

我安装了 JDK 1.6.0_13 并启动了 eclipse 调试透视图。 使用eclipse 3.3.2

感谢您的提示!

【讨论】:

【参考方案10】:

我在讨论我的问题的小组中发现了一个不同的线程。

http://groups.google.com/group/Google-Web-Toolkit/browse_thread/thread/a9b553a6df5da5b8/65298c48c32deac0?lnk=raot&pli=1

基本上,JDK 1.6.0_14 不能在 Eclipse 调试模式下与 GWT 一起使用。切换不同的 JDK 即可。

【讨论】:

JDK 1.6.0_12 出现同样问题并更新到 13,但问题仍然存在。

以上是关于为啥在调试模式下启动 GWT 时,我的断点不会中断的主要内容,如果未能解决你的问题,请参考以下文章

GWT SuperDevMode 断点不起作用

为啥在调试没有断点的访问区域时使用eclipse?

为啥这个简单的服务没有启动?

解决VS调试时断点不会命中

GDB 多线程调试:只停止断点的线程,其他线程任然执行; 或只运行某些线程 其他线程中断

C# VS2010 进入中断模式失败