【问题标题】:Visualising strace output可视化 strace 输出
【发布时间】:2011-06-22 19:46:43
【问题描述】:

是否有一个简单的工具,或者是否有一种方法可以将 strace 输出转换为可以可视化或更容易筛选的东西?我必须弄清楚应用程序哪里出了问题,但是跟踪它会产生大量数据。试图更大规模地跟踪这个应用程序及其线程正在做什么(或试图做什么)被证明是很难读取每个系统调用的。

我没有任何预算,我们是一家纯 Linux 商店。

【问题讨论】:

  • 了解您遇到的问题会有所帮助。然而,一般来说,当我做大量的 strace 工作时,我会经常使用 grep,如果问题是核心转储或我能猜到的某个类的特定系统调用,请专注于那里并使用它来引导我的追踪。
  • @seth 问题是应用程序看起来正在尝试连接到某些东西......它出现连接失败错误但是,嗅探网络接口,它从不尝试连接到盒子外面的任何东西.我看到 2 个 tcp 会话在环回中建立并结束,没有数据传输。
  • 我会egrep 'socket|connect|send' /tmp/tr 并尝试查看失败的命令。根据错误消息的确切文本,我可能会查找 DNS 或端口查找失败。

标签: linux debugging strace


【解决方案1】:

如果您的问题是网络问题,您可以尝试使用 a 将 strace 输出限制为与网络相关的系统调用

strace -e trace=network your_program

【讨论】:

    【解决方案2】:

    是的,使用-c参数来可视化每个系统调用的计数时间、调用和错误,并以表格的形式报告摘要,例如

    $ strace -c -fp $(pgrep -n php)
    Process 11208 attached
    ^CProcess 11208 detached
    % time     seconds  usecs/call     calls    errors syscall
    ------ ----------- ----------- --------- --------- ----------------
     83.78    0.112292          57      1953       152 stat
      7.80    0.010454          56       188           lstat
      7.79    0.010439          28       376           access
      0.44    0.000584           0      5342        32 recvfrom
      0.15    0.000203           0      3985           sendto
      0.04    0.000052           0     27184           gettimeofday
      0.00    0.000000           0         6           write
      0.00    0.000000           0      3888           poll
    ------ ----------- ----------- --------- --------- ----------------
    100.00    0.134024                 42922       184 total
    

    这将在不分析大量数据的情况下识别问题。

    另一种方法是通过特定的系统调用(例如recvfrom/sendto)进行过滤,以可视化接收和发送的数据,例如调试PHP进程:

    strace -e recvfrom,sendto -fp $(pgrep -n php) -s 1000 2>&1 | while read -r line; do
      printf "%b" $line;
    done | strings
    

    相关:How to parse strace in shell into plain text?

    【讨论】:

      猜你喜欢
      • 2011-08-16
      • 2023-03-18
      • 1970-01-01
      • 1970-01-01
      • 2018-01-29
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多