调试无响应的应用程序

阅读其他语言: english português 中文

有许多调试器教程可以教您如何设置行断点、记录值或计算表达式。虽然这些知识本身就为您提供了许多工具来调试应用程序,但实际场景可能会更复杂一些,并且需要更高级的方法。

在本文中,我们将学习如何在对项目没有太多了解的情况下找到导致 UI 崩溃的代码,并即时修复损坏的代码。

问题

如果您想遵循该示例,请首先克隆此存储库:https://github.com/flounder4130/debugger-example

假设您有一个复杂的应用程序,当您执行某些操作时该应用程序崩溃了。您知道如何重现错误,但困难在于您不知道代码的哪一部分负责此功能。

调试无响应的应用程序

在我们的示例应用程序中,当您单击按钮 N 时会发生崩溃。然而,要找到负责此操作的代码并不那么容易:

调试无响应的应用程序

让我们看看如何使用调试器来找到它。

方法断点

方法断点相对于行断点的优点是它们可以在整个类层次结构中使用。这对我们的例子有什么用?

如果您查看示例项目,您会发现所有操作类都派生自 Action 接口,并具有单个方法:perform()。

调试无响应的应用程序

在此接口方法上设置方法断点将在每次调用派生方法之一时暂停应用程序。要设置方法断点,请单击声明该方法的行。

启动调试会话并单击按钮N。应用程序在 ActionImpl14 上暂停。现在我们知道这个按钮对应的代码在哪里了。

调试无响应的应用程序

虽然在本文中我们的重点是查找错误,但当您想要了解某些内容在大型代码库中如何工作时,此技术也可以为您节省大量时间。

暂停应用程序

使用方法断点的方法效果很好,但它是基于我们了解父接口的假设。如果这个假设是错误的,或者我们由于其他原因不能使用这种方法怎么办?

好吧,我们甚至可以在没有断点的情况下做到这一点。单击按钮 N,当应用程序挂起时,转到 IntelliJ IDEA。从主菜单中,选择运行 | 调试操作 | 暂停计划.

调试无响应的应用程序

应用程序将暂停,允许我们在线程和变量选项卡中检查线程的当前状态。这让我们了解应用程序当时正在做什么。由于它挂起,我们可以识别导致阻塞的方法并将其追溯到调用站点。

这种方法比更传统的线程转储有一些优势,我们很快就会介绍。例如,它以方便的形式为您提供有关变量的信息,并允许您控制程序的进一步执行。

提示:有关暂停程序的更多提示和技巧,请参阅无断点调试和 Debugger.godMode()

线程转储

最后,我们可以使用线程转储,这并不是严格意义上的调试器功能。无论您是否使用调试器,它都可用。

AppMall应用商店 AppMall应用商店

AI应用商店,提供即时交付、按需付费的人工智能应用服务

AppMall应用商店 56 查看详情 AppMall应用商店

单击按钮N。当应用程序崩溃时,转到 IntelliJ IDEA。从主菜单中,选择运行 | 调试操作 | 获取线程转储.

探索左侧的可用线程,在AWT-EventQueue中,您将看到导致问题的原因。

调试无响应的应用程序

线程转储的缺点是它们仅提供程序在创建时的状态快照。您不能使用线程转储来探索变量或控制程序执行。

在我们的示例中,我们不需要诉诸线程转储。但是,我仍然想提一下这种技术,因为它在其他情况下也很有用,例如当您尝试调试在没有调试代理的情况下启动的应用程序时。

了解问题所在

不管调试技术如何,我们都会到达 ActionImpl14。在此类中,有人打算在单独的线程中完成工作,但将 Thread.start() 与 Thread.run() 混淆了,后者在与调用代码相同的线程中运行代码。

IntelliJ IDEA 的静态分析器甚至在设计时警告我们:

调试无响应的应用程序

在 UI 线程上调用执行繁重任务(或在本例中休眠很多时间)的方法并阻塞该方法,直到该方法完成。这就是为什么我们在点击按钮 N后一段时间内无法在 UI 中执行任何操作。

热插拔

现在我们已经找到了错误的原因,让我们纠正问题吧。

我们可以停止程序,重新编译代码,然后再次运行。然而,仅仅因为做了一个小更改就重新部署整个应用程序并不总是明智的。

让我们用聪明的方式来做吧。首先,使用建议的快速修复修复代码:

调试无响应的应用程序

代码准备好后,点击运行 | 调试操作 | 重新加载更改的类。出现一个气球,确认新代码已到达虚拟机。

调试无响应的应用程序

让我们返回应用程序并检查一下。单击按钮 N 不再使应用程序崩溃。

提示:请记住,HotSwap 有其局限性。如果您对扩展的 HotSwap 功能感兴趣,那么看看 DCEVM 或 JRebel 等高级工具可能是个好主意

概括

使用我们的推理和一些调试器功能,我们能够找到导致项目中 UI 崩溃的代码。然后,我们继续修复代码,而不会浪费时间重新编译和重新分发,这在实际项目中可能会很长。

我希望您发现所描述的技术很有用。让我知道你的想法!

如果您对更多与调试和分析相关的文章感兴趣,请查看我的其他一些文章:

Debugger.godMode() – 使用调试器破解 JVM 应用程序解决调试器速度慢的问题createDirectories() 有什么问题吗? – CPU 分析指南无断点调试

更多精彩敬请期待!

以上就是调试无响应的应用程序的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/497512.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 18:43:53
下一篇 2025年11月8日 18:44:39

相关推荐

  • 比特币与区块链的关系

    比特币与区块链之间有着密不可分的联系。为了实现数字货币这一设想,区块链技术应运而生;而区块链作为底层架构的发展,也推动了比特币支付愿景的实现。简而言之:比特币催生了区块链,而区块链则是比特币的技术基础。 实际上,在早期阶段,一群技术先驱就提出了数字货币的概念,并尝试将其落地。例如,最早的电子货币e-…

    2025年12月8日
    000
  • 加密行业里程碑:Circle正式申请国家信托银行执照,USDC储备金管理或迎重大变革

    继惊人的IPO风潮后,稳定币发行商Circle宣布,已正式向美国货币监理署(OCC)提交申请,成立第一国民数字货币银行(First National Digital Currency Bank),向机构客户提供数字资产托管服务,并接受联 邦 政 府的监督。 OCC核准的国家信托银行执照 OCC(美国…

    2025年12月8日
    000
  • 2025年可能通过的加密ETF申请有哪些?一文解析

    自美国证券交易委员会(sec)于2024年1月10日 批准比特币现货etf,并于2024年1月11日开始交易后,各种etf申请层出不穷,既有主流币,也有其他加密货币。本文梳理今年还有哪些加密货币etf已提交申请,通过的概率怎么样?对加密市场行情有何影响? 一、今年还有哪些加密货币ETF已提交申请 S…

    2025年12月8日
    000
  • 加密初创公司、ICO 与融资:驾驭 2025 年的牛市浪潮

    探索2025年加密初创企业、ico及融资最新趋势。从预测市场到ai驱动的解决方案,了解推动投资者信心并塑造web3未来的关键洞察。 加密初创企业、ICO与融资:迎接2025年的牛市浪潮 加密货币和Web3领域正变得日益活跃!截至2025年6月,初创企业通过140笔交易筹集了超过11.5亿美元资金,表…

    2025年12月8日
    000
  • 虚拟币是什么?如何辨别虚拟货币的真伪?一文了解币圈

    虚拟币是一种基于区块链技术的去中心化数字资产,具有多样化的用途。1. 它依赖密码学技术确保交易安全;2. 采用去中心化设计,由全球用户共同维护;3. 可作为支付工具、平台代币或投资资产使用。辨别虚拟币真伪需考察白皮书与代码库、了解团队背景及社区活跃度、关注落地应用、警惕高收益承诺,并参考第三方评级信…

    2025年12月8日
    000
  • 如何判断一个迷因币是否具有实用性

    要判断一个迷因币是否具备实用性,需从以下四步分析:1.检视实际应用场景,如支付功能、生态系统准入、治理权、独家内容或服务;2.分析代币经济学,包括供应量与分配、销毁机制、交易税用途;3.评估技术基础与开发团队,关注底层公链、团队透明度、代码与开发活动;4.审视社区质量与路线图,重视建设性讨论及清晰可…

    2025年12月8日
    000
  • 币安Binance API如何申请?最新官方API接口申请指南

    币安API,即应用程序编程接口(Application Programming Interface),是连接用户程序与币安交易平台的桥梁。它允许开发者通过编写代码的方式,实现自动化交易、市场数据分析、资产管理等多种高级功能。对于量化交易者、开发者以及需要进行… 币安api,即应用程序编程…

    2025年12月8日
    000
  • 加密资产,技术股票和市场扩张:一个新时代?

    分析加密资产、技术股票与市场扩张的交汇点,洞察金融格局的潜在变革。 加密资产、技术股票与市场扩张:迈向新时代? 金融领域正经历加密资产、科技股以及整体市场扩展三者交汇带来的深刻影响。我们是否正处于一场重大变革的前夜? Coinbase的领导地位:机构采纳的关键信号 Coinbase作为行业领军者的地…

    2025年12月8日
    000
  • 灰度数字大盘最新持仓曝光:BTC占比下滑,山寨币机会浮现?

    灰度投资调整数字大盘基金持仓,比特币占比下降,以太坊及山寨币占比上升。1. 灰度Q2报告显示,BTC持仓比例由68.5%降至62.3%,ETH上升至28.1%,SOL及其他山寨币也有所增加;2. 调整原因包括比特币ETF竞争加剧导致资金流出、ETH ETF预期推动资金流入以及山寨币市场活跃吸引机构配…

    2025年12月8日
    000
  • Breed风投紧急预警:198家企业比特币储备达470亿美元 暴跌或触发连环清算

    从微策略(Strategy)到新创小型股,2025年已有超过250家机构把比特币(BTC)当作「企业现金」。 这股BTC库藏股热潮挑战传统财务框架的同时,也埋下高杠杆的隐忧。 风险投资公司Breed报告直指:若BTC转跌,许多企业可能陷入融资枯竭的死亡螺旋。 ‍ 热潮如何成形? 通膨的高涨与法币信任…

    2025年12月8日
    000
  • Metaplanet的比特币大富翁:从默默无闻到前五名!

    metaplanet的比特币积极战略助其跃居前五大公司持有者之列,超越了cleanspark,甚至引发了saylor的关注。这是企业财务的新方向吗? Metaplanet的比特币大冒险:从无名小卒到前五强! 让开,MicroStrategy!新的比特币巨头登场了。作为亚洲对标MicroStrateg…

    2025年12月8日
    000
  • 灰度数字大盘是什么意思

    灰度数字大盘是指灰度投资旗下数字资产信托基金的整体表现,其核心包含单一资产信托和复合型基金。1.“灰度”指Grayscale Investments,旗下有GBTC、ETHE等信托产品;2.“数字大盘”狭义指追踪主流加密资产的GDLC基金,广义则涵盖灰度所有信托产品整体表现。关注灰度数字大盘的原因包…

    2025年12月8日
    000
  • Ripple的$ RLUSD和Stablecoin Boom:有什么交易?

    探索ripple $ rlusd stablecoin的飙升,对以太坊生态的影响以及defi中stablecoin热潮的深远意义。 Ripple的$ RLUSD与Stablecoin交易:背后隐藏了什么? Ripple推出的稳定币$ RLUSD正引发广泛关注。自2025年年初以来,其供应量增长了四倍…

    2025年12月8日
    000
  • 雪崩价格预测:灰度提升信号潜在集会到50美元?

    雪崩(avax)因其不断增强的链上活跃度与机构关注度正逐步升温,其价格是否有望冲高至50美元?我们来看看最新的价格预测和市场动向。 雪崩价格展望:灰度背书预示或将冲击50美元? 雪崩(AVAX)展现出强劲的韧性,吸引了越来越多机构的关注,并在链上活动方面表现突出。这是否意味着一场大规模上涨即将到来?…

    2025年12月8日
    000
  • 锚地,稳定币和脱口秀:加密戏剧中的纽约分钟

    anchorage digital的stablecoin剔除举动引发争议。是出于监管审慎,还是背后隐藏自我利益?我们深入解析锚地、稳定币以及下架风波。 锚地、稳定币与退市风波:加密世界的一出大戏 Anchorage Digital决定剔除部分Stablecoin,此举在加密圈掀起了轩然大波,不仅引发…

    2025年12月8日
    000
  • 锚固,稳定和法规:纽约的潮汐视角

    安克雷奇(Anchorage)摆脱了有关Stablecoin安全,监管和市场机会的辩论。这是监管的必要性还是战略性游戏? Stablecoins的世界总是在嗡嗡作响,最近,Anchorage Digital逐步支持USDC的决定确实引起了锅的刺激。此举提出了一些有关Stablecoin安全性,不断发…

    2025年12月8日
    000
  • 云采矿:您获得财务自由和加密奖励的门票?

    探索hashj与miningtoken等云采矿平台如何通过加密货币奖励实现财务自由。这些机会是否真实可行? 云采矿:通往财务自由与加密奖励的途径? 云挖矿正变得炙手可热,承诺通过加密货币奖励实现财务自由。Hashj和MiningToken等平台正迅速崛起,但它们真的可靠吗?我们来深入了解。 云采矿的…

    2025年12月8日
    000
  • 加密股票激增:硬币,Mara,clsk和Altcoin国库革命

    coin、mara与clsk等美国加密资产正吸引着投资者的目光。一些公司开始多元化布局山寨币,引发了“美国上市altcoin热潮”。 加密股票飙升:Coin、Mara、clsk与Altcoin国库革新 加密市场正在升温,相关的数字资产也在同步上涨!像Coinbase(Coin)、Marathon D…

    2025年12月8日
    000
  • 7月要观看的十大加密投资:超越通常的嫌疑人

    探索7月有潜力的加密投资,超越sol和xrp等主流币种,寻找潜在的高增长机会。 7月值得关注的十大加密投资:不止于主流币种 随着7月的到来,加密市场正蓄势待发。虽然主流币种依然稳健,但精明的投资者正在挖掘那些被低估的代币,以寻求更高的回报。今年7月,关键在于跳出常规思维,发现具备不对称收益潜力的项目…

    2025年12月8日
    000
  • Vinanz,比特币,控股:解码最新动作

    探索vinanz的比特币积累策略,最新的买入动向及其对持有比特币企业格局的深远影响。 Vinanz,比特币,持仓:解析最新动态 Vinanz Limited(LSE:BTC)正在数字资产领域掀起波澜。凭借对比特币的持续增持和对财务透明的高度关注,我们来剖析其最近的行动以及对企业持有比特币这一趋势的潜…

    2025年12月8日
    000

发表回复

登录后才能评论
关注微信