V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
Dlin
V2EX  ›  程序员

IDEA 能不能在 DEBUG 模式下手动触发某个方法

  •  
  •   Dlin · 2022-05-18 09:45:37 +08:00 · 2854 次点击
    这是一个创建于 949 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这样就不需要专门写个接口或是通过其他方式来调用触发断点了。 手动触发可以极大的提升调试效率。

    21 条回复    2022-05-18 15:46:15 +08:00
    zydxn
        1
    zydxn  
       2022-05-18 09:47:49 +08:00
    写单元测试不行吗?
    Dlin
        2
    Dlin  
    OP
       2022-05-18 09:51:56 +08:00
    @zydxn 启动很慢,费时费力
    Bronya
        3
    Bronya  
       2022-05-18 09:52:07 +08:00   ❤️ 2
    断点停止的时候可以按 Alt+F8 打开计算表达式窗口,可以主动执行表达式
    dddyyyttt
        4
    dddyyyttt  
       2022-05-18 09:55:44 +08:00
    如果是 spring 项目可以试下 arthas 的通过 springcontext 执行任意方法。
    chendy
        5
    chendy  
       2022-05-18 10:12:46 +08:00
    看了看手里的 php 项目,嗯,真香
    可以尝试 alt f8 吧,直接拿 application context
    或者写个专门的 debug 接口,反射干所有
    Dlin
        6
    Dlin  
    OP
       2022-05-18 10:15:34 +08:00
    @dddyyyttt 好东西啊,谢谢,可以看看
    LeeSeoung
        7
    LeeSeoung  
       2022-05-18 10:16:05 +08:00
    debug 的时候可以自己输入表达式运行的
    Dlin
        8
    Dlin  
    OP
       2022-05-18 10:16:48 +08:00
    @chendy 哈,你的建议我明白,感谢
    Dlin
        9
    Dlin  
    OP
       2022-05-18 10:17:35 +08:00
    @LeeSeoung 但是需要一个入口来触发 debug 。我需要一个方法帮助我触发,如果能在 idea 里面直接触发就好了。
    LLaMA2
        10
    LLaMA2  
       2022-05-18 10:19:57 +08:00
    在工程的入口处随便下个断,调用某个会触发你意图调试代码块的方法,然后光标点在你要停住的地方,然后在调试器中找到运行到光标处的按钮 (↘I )快捷键 ALT+SHIFT+9
    liangkang1436
        11
    liangkang1436  
       2022-05-18 10:25:58 +08:00 via Android
    @Dlin 简单来说还是需要上下文咯,那跟单元测试没有区别
    cslive
        12
    cslive  
       2022-05-18 10:39:29 +08:00
    debug 模式下不是有个计算器图标一样的按钮,点一下,里面写代码,可以执行
    q1angch0u
        13
    q1angch0u  
       2022-05-18 10:49:25 +08:00 via iPhone
    单测又不会启动 sprinh ,为啥会慢…
    EastLord
        14
    EastLord  
       2022-05-18 10:50:22 +08:00
    其实你可以看看 IDEA 官方帮助文档
    Helsing
        15
    Helsing  
       2022-05-18 10:59:23 +08:00 via iPhone
    idea debug 时把断点设成不 suspend ,再在断点那里加上触发逻辑就可以了
    28Sv0ngQfIE7Yloe
        16
    28Sv0ngQfIE7Yloe  
       2022-05-18 11:01:42 +08:00
    问题是依赖上下文和单测也没区别啊,还是单测写得快啊。。。
    hengyunabc
        17
    hengyunabc  
       2022-05-18 11:18:25 +08:00
    可以试下 arthas vmtool ,https://arthas.aliyun.com/doc/vmtool
    dddd1919
        18
    dddd1919  
       2022-05-18 12:14:21 +08:00
    @Bronya 正解,而且需要把断点打在要执行的代码前,debug 到断点时能用此方法执行断点处已经加载的代码
    co2fe
        19
    co2fe  
       2022-05-18 13:45:57 +08:00
    推荐 arthas 配合 IDEA 插件,拿到 SpringContext 直接调用任意方法。
    Dlin
        20
    Dlin  
    OP
       2022-05-18 15:45:39 +08:00
    @dddd1919 感谢,我看看
    Dlin
        21
    Dlin  
    OP
       2022-05-18 15:46:15 +08:00
    @hengyunabc 感谢,我看看
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2722 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 09:07 · PVG 17:07 · LAX 01:07 · JFK 04:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.