java - 使用 >>、>、>|、||、|<、<、<< 进行可视化调试

标签 java python performance debugging debuggervisualizer

使用标准调试器调试性能问题几乎没有希望,因为细节级别太高。其他方法是使用分析器,但它们很少给我有用的信息,尤其是当涉及到 GUI 和后台线程时,因为我永远不知道用户是否真的在等待计算机。另一种方法是简单地使用 Control + C 并查看它在代码中的何处停止。

我真正想要的是将快进、播放、暂停和倒带功能与代码的一些视觉表现相结合。这意味着我可以将代码设置为快进运行,直到我将 GUI 导航到关键点。然后我将代码设置为在慢速模式下运行,同时我得到一些视觉表现,哪些行正在执行(可能是代码的某种缩小 View )。例如,我可以将执行速度设置为 0.0001x。我相信我会通过这种方式非常清楚地了解问题是出在特定模块内部,还是出在模块之间的通信中。

这存在吗?我的具体需求是 Python,但我有兴趣在任何语言中看到此类功能。

最佳答案

“快进到关键点”功能已经存在于任何调试器中,它被称为“断点”。确实有可以减慢执行速度的调试器,但这不会帮助您调试性能问题,因为它不会减慢计算机速度。处理器、磁盘和内存仍然和以前一样慢,所发生的只是调试器在每行代码之间插入延迟。这意味着每行代码突然花费或多或少相同的时间,这意味着它隐藏了性能问题所在的任何痕迹。

找到性能问题的唯一方法是记录应用程序中完成的每个调用以及花费的时间。这就是分析器所做的。确实,使用分析器很棘手,但可能没有更好的选择。从理论上讲,您可以记录每个通话和每个通话的时间,然后通过倒带来回播放,但这会使用惊人的内存量,而且它实际上不会告诉您比分析器更多的信息(事实上,它会告诉你更少,因为它会遗漏某些类型的性能问题)。

您应该能够通过探查器找出花费了很长时间的内容。请注意,这可能是由于某些函数调用花费了很长时间,因为它们进行了大量处理,或者可能是系统调用花费了很长时间,导致某些东西(网络/磁盘)变慢了。或者可能是一个非常快速的调用被调用了很多次。探查器将帮助您解决这个问题。但是,如果您可以仅在关键部分打开探查器(减少噪音)并且可以多次运行该关键部分(提高准确性),这将很有帮助。

关于java - 使用 >>、>、>|、||、|<、<、<< 进行可视化调试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5416987/

相关文章:

java - HTML 部署中的 LibGDX GwtApplication 异常(TypeError)

java - 从 python 运行 bat 文件会返回错误,而直接从 cmd 运行

java - Sonatype Nexus 持有 tar 和 war Artifact ,其 Maven 坐标未在 lucene 搜索 api 中列出

python - 嵌套类实例的有用默认 __repr__

java - Oracle JDBC优化: Enable PreparedStatement caching in a Spring boot Application

python - 下载NLTK数据时出错: [Errno 11004] getaddrinfo failed

Python 2 pdb : a statement behaves differently when run at the pdb prompt

c# - 创建大列表<T>

java - MYSQL慢查询

PHP 连接超时