在调试模式下运行程序非常慢

Posted

技术标签:

【中文标题】在调试模式下运行程序非常慢【英文标题】:Running a program in Debug mode is incredible slow 【发布时间】:2011-06-03 05:37:42 【问题描述】:

从最近开始,在 Eclipse Galileo 中以 Debug 模式运行程序要慢得多。

我不知道有任何变化。

你知道可能是什么原因吗?正常运行是没有问题的。

【问题讨论】:

可以启用某种分析吗? 我刚从 Galileo 切换到 Helios 但没有任何改进。 如何启用/禁用分析? 调试常规程序,还是插件/rcp? 一个常规程序(使用 Spring 和 Maven)。 【参考方案1】:

我发现我经常忘记我在表达式面板中添加了一堆不再需要的表达式,这些表达式仍然被评估(或未能评估),这大大减慢了事情的速度。确保在不需要时清除这些表达式。

【讨论】:

【参考方案2】:

您要附加哪种类型的 JVM?根据我的经验,我发现在调试模式下,IBM JDK 速度非常慢。 对于所有 JVM,检查您是否有条件昂贵的条件断点。尝试禁用断点。您可能有异常断点或表达式。尝试禁用或删除它们。

【讨论】:

【参考方案3】:

另一个“调试中断”是使用方法进入/退出断点。

您是否尝试过一次删除 所有 断点定义?

有时我认为 Eclipse 与它的某些内部/显示状态不同步。也许您应该尝试设置工作区的新(而不是副本)。这有时可以帮助我从虚假特征中恢复过来。

这是删除所有断点的方法

Eclipse -> 运行 -> 删除所有断点 - 用于删除所有时间的所有断点

Eclipse -> 运行 -> 跳过所有断点 - 用于临时删除断点

【讨论】:

我创建了一个新的工作区并重新检查了那里。现在调试工作正常。你知道如何修复我的旧工作区吗? 我只能建议放弃它,除非您想了解工作区的 .metadata 目录中大约 1.000.000 个文件的含义。我不知道如何恢复......有一个在命令行中添加“-clean”一次的童话故事,但它从来没有帮助...... 使用“-clean”启动 Eclipse 为我修复了它。 :-) 谢谢你,去掉我已经忘记的方法入口断点解决了我的性能问题! 谢谢。对我来说,它删除了所有有用的断点和表达式。奇怪的是,这些断点在过去并没有引起问题——突然之间,从一个应用程序启动到下一个,它们确实如此。好像是eclipse的内部问题。【参考方案4】:

在调试模式下运行时,Java 虚拟机通常会关闭即时编译器 (JIT)。在 IBM WebSphere 上,IBM JDK 进行了严重的去优化并且会非常慢。 顺便说一句,调试也使重新编译和优化代码变得不可能。

中继日志记录以进行复杂调试:它将节省您在生产中的时间,而您无法确定调试。

【讨论】:

Java 虚拟机在调试模式下运行时通常会关闭即时编译器 (JIT),这是不正确的。当设置断点时,该方法通常会被优化该方法被解优化并由解释器执行。 旧版 IBM JVM (1.4-) 确实非常慢。反正去优化方法,重建堆栈跟踪等等都是一个缓慢的操作,不是吗? 只需要在调试模式下的断点进行反优化 - 而不是单独获取堆栈跟踪。去优化当然是一个非常缓慢的过程。除非必要,否则不应生成堆栈跟踪(即遍历堆栈),即如果异常不打印其堆栈跟踪或未调用 getStackTrace。 AFAIK Sun 和 IBM 的 JVM 1.4 在调试模式下以正常速度运行(肯定是 Sun 的)【参考方案5】:

我只是在 Eclipse 调试模式下运行一个程序,几乎不需要调试就可以立即运行,但是当我在调试模式下运行它时,它真的很慢。我检查并删除了大量我没有使用的随机无用断点,然后程序加速了很多(200 倍左右)。

【讨论】:

这对我很有帮助 - 我在同一个工作区中有其他项目的断点,我将它们全部删除,我当前的程序调试速度加快了【参考方案6】:

在 Windows 上清除临时文件为我修复了这个问题

"C:\\Documents and Settings\\user\\Local Settings\\Temp"

【讨论】:

【参考方案7】:

关闭eclipse...清除%temp%文件夹、临时文件夹...禁用断点...在大多数情况下这肯定会解决问题。

【讨论】:

这个对我有用,非常感谢!顺便说一句,你不需要关闭 Eclipse。【参考方案8】:

我经常遇到这个问题。解决方法很简单,删除所有断点。 (运行 >> 删除所有断点)

【讨论】:

【参考方案9】:

在我的例子中,Eclipse 正在尝试构建文件,而我是手动进行的。 转到窗口 -> 首选项 -> 运行/调试 -> 启动,然后在常规选项下禁用“启动前构建(如果需要)”解决了缓慢问题。

【讨论】:

【参考方案10】:

禁用“单步操作后显示方法结果”。

【讨论】:

就是这样。对于 IntelliJ IDEA 用户,请执行此操作。 在 Intellij 中完全等价的声音是什么? 究竟为什么要用'Show method result after a step operation'??【参考方案11】:

多年来一直在学习使用 eclipse,这里有几个建议

    将您的开放项目尽量减少您的实际需要 保持精简 - 卸载您不使用的插件/功能(mylnn、验证等)。 无论您做什么,日食都会随着时间的推移而变慢。 获得响应式 IDE 的最终解决方案是回收现有工作区(创建新工作区并引入您需要的项目)。

【讨论】:

【参考方案12】:

在调试模式下运行应用程序之前,请按(禁用所有断点),您不会遇到加载缓慢或任何问题。在您的应用程序启动后,只需启用断点,然后您就可以调试您的代码。

【讨论】:

【参考方案13】:

清除所有 breskpoints .. 为我工作

【讨论】:

请不要用已经给出的答案来回答问题。【参考方案14】:

我最近在升级我的 macOS 版本后遇到了这个问题。 我无法使用上述所有解决方案修复缓慢的调试器,我最终安装了更新版本的 eclipse,之后一切正常。

【讨论】:

【参考方案15】:

这发生在我身上一次,问题是,我在 Source Look-up 中有包含我所有项目源代码的文件夹。这样一来,不仅调试器变得非常慢(因为它可能爬取了我所有的文件),而且我无法做很多事情,例如内联执行。

要点:检查您的来源查找。在调试视图中右键单击任何线程进行调试时,选择 Edit Source Look-up 并查看您可以/应该从那里删除什么。就我而言,这是一个虚假文件夹,其他时候您可能有太多项目、文件夹、JAR 等,可能会删除一些。

【讨论】:

【参考方案16】:

最近我在 eclipse 和 Visual Studio 代码(vs 代码)中的性能调试非常慢

就我而言,问题在于 JPA 实体中的 lombok 配置。

我将 @Data 注释更改为 @Getters@Setters.

lombokhashCode() 和 equals() 实现似乎与 JPA 冲突。

【讨论】:

以上是关于在调试模式下运行程序非常慢的主要内容,如果未能解决你的问题,请参考以下文章

升级到最新的 SDK 版本 1.20.4 后运行/调试 Flutter 应用程序非常慢

sql数据库文件过大,程序运行非常慢,怎么办

在“localhost”上运行站点非常慢

为啥我的程序在发布模式下运行良好,但在调试模式下失败? [关闭]

这个程序如何在调试模式下运行? [关闭]

AdaGide:调试模式和发布模式