使用dtrace跟踪系统调用

时间:2016-08-28 08:27:12

标签: macos dtrace

我正在运行一个使用流程ID 423运行的应用程序。 基本上想调试这个过程。

问题是, 使用命令sudo dtruss -a -t open_nocancel -p 423我没有看到执行打印消息,并且像sudo kill -30 423这样的系统信号似乎没有显示在堆栈跟踪中。我错过了什么吗?我如何实现这一目标?。

下面的样本堆栈跟踪

    PID/THRD  RELATIVE  ELAPSD    CPU SYSCALL(args)          = return
  423/0xcf5:  109498638      14      9 open_nocancel("/Users/krishna/.rstudio-desktop/sdb/s-3F25A09C/373AE888\0", 0x0, 0x1B6)    = 21 0
  423/0xcf5:  109509540      20     16 open_nocancel("/Users/krishna/.rstudio-desktop/history_database\0", 0x209, 0x1B6)     = 20 0
  423/0xcf5:  109510342      56     44 open_nocancel(".\0", 0x0, 0x1)        = 20 0
  423/0xcf5:  109516113      19     15 open_nocancel("/Users/krishna/.rstudio-desktop/history_database\0", 0x209, 0x1B6)     = 20 0
  423/0xcf5:  109517099      35     30 open_nocancel(".\0", 0x0, 0x1)        = 20 0
  423/0xcf5:  109576820      16     11 open_nocancel("/Users/krishna/.rstudio-desktop/sdb/s-3F25A09C/373AE888\0", 0x0, 0x1B6)    = 21 0
  423/0xcf5:  109673038      16     10 open_nocancel("/Users/krishna/.rstudio-desktop/sdb/s-3F25A09C/373AE888\0", 0x0, 0x1B6)    = 21 0

1 个答案:

答案 0 :(得分:1)

命令sudo dtruss -a -t open_nocancel -p 423将仅跟踪 open_nocancel系统调用。根据{{​​3}}:

NAME
       dtruss - process syscall details. Uses DTrace.

SYNOPSIS
       dtruss [-acdeflhoLs] [-t syscall] { -p PID | -n name | command }

...

       -t syscall
              examine this syscall only

如果要跟踪其他系统调用,则需要更改-t ...参数,或将其删除。