使用 dtrace 跟踪系统调用
Tracing system calls using 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[=10=]", 0x0, 0x1B6) = 21 0
423/0xcf5: 109509540 20 16 open_nocancel("/Users/krishna/.rstudio-desktop/history_database[=10=]", 0x209, 0x1B6) = 20 0
423/0xcf5: 109510342 56 44 open_nocancel(".[=10=]", 0x0, 0x1) = 20 0
423/0xcf5: 109516113 19 15 open_nocancel("/Users/krishna/.rstudio-desktop/history_database[=10=]", 0x209, 0x1B6) = 20 0
423/0xcf5: 109517099 35 30 open_nocancel(".[=10=]", 0x0, 0x1) = 20 0
423/0xcf5: 109576820 16 11 open_nocancel("/Users/krishna/.rstudio-desktop/sdb/s-3F25A09C/373AE888[=10=]", 0x0, 0x1B6) = 21 0
423/0xcf5: 109673038 16 10 open_nocancel("/Users/krishna/.rstudio-desktop/sdb/s-3F25A09C/373AE888[=10=]", 0x0, 0x1B6) = 21 0
命令sudo dtruss -a -t open_nocancel -p 423
将仅跟踪open_nocancel
系统调用。根据 OS X man page for dtruss
:
NAME
dtruss - process syscall details. Uses DTrace.
SYNOPSIS
dtruss [-acdeflhoLs] [-t syscall] { -p PID | -n name | command }
...
-t syscall
examine this syscall only
如果您想跟踪其他系统调用,您需要更改 -t ...
参数或将其删除。
我是 运行 一个使用进程 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[=10=]", 0x0, 0x1B6) = 21 0
423/0xcf5: 109509540 20 16 open_nocancel("/Users/krishna/.rstudio-desktop/history_database[=10=]", 0x209, 0x1B6) = 20 0
423/0xcf5: 109510342 56 44 open_nocancel(".[=10=]", 0x0, 0x1) = 20 0
423/0xcf5: 109516113 19 15 open_nocancel("/Users/krishna/.rstudio-desktop/history_database[=10=]", 0x209, 0x1B6) = 20 0
423/0xcf5: 109517099 35 30 open_nocancel(".[=10=]", 0x0, 0x1) = 20 0
423/0xcf5: 109576820 16 11 open_nocancel("/Users/krishna/.rstudio-desktop/sdb/s-3F25A09C/373AE888[=10=]", 0x0, 0x1B6) = 21 0
423/0xcf5: 109673038 16 10 open_nocancel("/Users/krishna/.rstudio-desktop/sdb/s-3F25A09C/373AE888[=10=]", 0x0, 0x1B6) = 21 0
命令sudo dtruss -a -t open_nocancel -p 423
将仅跟踪open_nocancel
系统调用。根据 OS X man page for dtruss
:
NAME dtruss - process syscall details. Uses DTrace. SYNOPSIS dtruss [-acdeflhoLs] [-t syscall] { -p PID | -n name | command } ... -t syscall examine this syscall only
如果您想跟踪其他系统调用,您需要更改 -t ...
参数或将其删除。