美文网首页
strace命令调试JVM Thread

strace命令调试JVM Thread

作者: springzzj | 来源:发表于2020-01-21 15:26 被阅读0次

在前一段的工作中遇到了JVM STW的问题,当时使用strace命令来查看JVM系统调用,本文将之前的操作步骤记录下来。

确定Java进程ID
ps -aux | grep "java"

结果如下,黄框内的就是进程的PID


image
确定JVM线程ID

JVM中有很多线程,我们这里主要找控制safepoint的线程,也就是VM Thread。这里我们使用Jstack命令将JVM所有的进程都打出来,然后寻找其中的VM Thread。这里的nid就是线程ID(16进制表示),如图:


image
strace attch线程

182970是16进制线程ID转换过来的10进制格式,然后使用strace命令attach到该线程,就可以看到该线程的系统调用,加上-T参数后,每行会打印出来每条系统调用的耗时,单位是微秒。


image
总结

strace是一个运维经常用到的命令,常被用到来检测进程问题,往往一些比较诡异的问题可以通过strace找到有问题的系统调用,进而找到问题原因。

相关文章

  • strace命令调试JVM Thread

    在前一段的工作中遇到了JVM STW的问题,当时使用strace命令来查看JVM系统调用,本文将之前的操作步骤记录...

  • Strace 调试 PHP

    strace 命令是一个集诊断、调试、统计与一体的工具,我们可以使用 strace 对应用的系统调用和信号传递的跟...

  • 使用strace命令

    strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果...

  • 3. strace的使用

    相关文章1. strace 调试工具2. 神器之strace 3. 一段程序使用strace和ltrace

  • strace命令

  • strace 命令

    strace常用来跟踪进程执行时的系统调用和所接收的信号。 普通函数调用需要耗费的时间 一次系统调用需要耗费的时间...

  • strace命令

    [TOC] strace 跟踪进程中的系统调用 strace常用来跟踪进程执行时的系统调用和所接收的信号。 在Li...

  • JVM参数

    JMX监控调试参数 jps命令 jstat 上图表头描述: JVM启动参数| 参数 | 描述 ||-----|--...

  • LLDB 笔记

    单步调试 以下都是 thread 命令的别名 s (step-in) 源码级别 si (step-in) 指...

  • Android debugger ptrace 的处理

    代码位置:system/core/debuggerd/debuggerd gdb调试: strace查看系统调用:

网友评论

      本文标题:strace命令调试JVM Thread

      本文链接:https://www.haomeiwen.com/subject/dveezctx.html