• 请不要在回答技术问题时复制粘贴 AI 生成的内容
jeffh
V2EX  ›  程序员

Java 调用链跟踪源码求助

  •  
  •   jeffh · Apr 21, 2020 · 3908 views
    This topic created in 2393 days ago, the information mentioned may be changed or developed.
    项目使用的是 Hibernate,我想看看当我执行 SQL 时 Hibernate 具体执行了它自身的哪些代码,我想跟踪源码看看,是否有工具可以看到它执行过程的调用栈呢?感谢。
    20 replies  •  2020-04-22 12:56:54 +08:00
    monkeyWie
    monkeyWie
    Apr 21, 2020
    1
    打个断点不就看到了吗
    jeffh
    jeffh
    OP
    Apr 21, 2020
    2
    @monkeyWie 不知道在 Hibernate 源码中的哪个地方打断点
    royan
    royan
    Apr 21, 2020
    3
    祝早日脱离 hibernate 的苦海
    340244120w
    340244120w
    Apr 21, 2020
    4
    @jeffh #2
    在你业务查询代码里打个断点,到断点的时候,仔细看 idea 的 debug 窗口里所有 tab 。。。
    jeffh
    jeffh
    OP
    Apr 21, 2020
    5
    @340244120w 这个时候调用栈还没到 hibernate 里面
    guyeu
    guyeu
    Apr 21, 2020
    6
    @jeffh #5 然后一行一行跟,它总能走进去的
    340244120w
    340244120w
    Apr 21, 2020
    7
    用 xrebel 吧
    jeffh
    jeffh
    OP
    Apr 21, 2020
    8
    @guyeu 我试过,按住 F7 不放,半天了都没进去,所以才来求助,(哭
    zhaorunze
    zhaorunze
    Apr 21, 2020
    9
    先抛异常,然后在异常所在文件的函数上面打断点。当然如果没有异常当我没说,或者可以认为的制造异常,然后抛异常的位置,大概就是关键代码位置。
    ic2y
    ic2y
    Apr 21, 2020
    10
    @jeffh 直接在 jdbc 的 jar 包打断点,让线程停住,然后回头看调用栈。看看上下文是怎么做 ORM 处理的。
    ic2y
    ic2y
    Apr 21, 2020
    11
    例如,com.mysql.jdbc.StatementImpl 的 executeQuery 方法,这种底层 jdbc 的 查询和 execute 方法,打上断点,然后做一些业务操作,静静等待断点到来
    aitaii
    aitaii
    Apr 21, 2020 via Android
    12
    断电看调用栈
    aitaii
    aitaii
    Apr 21, 2020 via Android
    13
    @aitaii 断点
    jeffh
    jeffh
    OP
    Apr 21, 2020
    14
    @340244120w 貌似不是我想要的
    ilumer
    ilumer
    Apr 22, 2020
    15
    故意抛出异常,然后跟着堆栈走
    scemsjyd
    scemsjyd
    Apr 22, 2020 via Android
    16
    arthas 可以看调用栈,不过没有直接本地 debug 来的快
    THESDZ
    THESDZ
    Apr 22, 2020
    17
    是不是看似没进去,实际使用了反射,然后你跳过了?
    itechify
    itechify
    Apr 22, 2020 via Android
    18
    呆呆的办法~

    ```java
    public void test(){
    A a = aDao.save(new A());
    // 断点下一行
    sout("断点这一行然后看调用栈找到你需要的断点入口再断点");
    }
    ```
    340244120w
    340244120w
    Apr 22, 2020
    19
    @jeffh #14 xrebel 能看到 sql 语句到 controller 的所有栈信息,不就是你要的么。。你用了就知道了
    zek
    zek
    Apr 22, 2020
    20
    试试 java Agent
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   987 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 65ms · UTC 22:15 · PVG 06:15 · LAX 14:15 · JFK 17:15
    ♥ Do have faith in what you're doing.