java代码中有很多地方使用了本地方法,即带有 native 关键字的方法。 这些方法在执行时,很多时候运行的是对操作系统的方法,在用eclipse代码调试时,对本地方法的执行步骤是看不到的。在 linux下 ,借助 starce 命令,可以看到系统调用方法的踪迹,方便对代码的分析。
starce 命令简介
Strace是Linux中一个调试和跟踪工具。它可以接管被跟踪进程执行的系统调用和收到的信号。然后把每一个执行的系统调用的名字,参数和返回值打印出来。
-c 统计每一系统调用的所执行的时间,次数和出错的次数等.
-d 输出strace关于标准错误的调试信息.
-f 跟踪由fork调用所产生的子进程.
-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号.
-F 尝试跟踪vfork调用.在-f时,vfork不被跟踪.
-h 输出简要的帮助信息.
-i 输出系统调用的入口指针.
-q 禁止输出关于脱离的消息.
-r 打印出相对时间,关于每一个系统调用.
-t 在输出中的每一行前加上时间信息.
-tt 在输出中的每一行前加上时间信息,微秒级, 时间格式:17:22:58.345879
-ttt 微秒级输出,以微秒表示时间, 时间格式:1448529538.276858
-T 显示每一调用所耗的时间.
-v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出.
-V 输出strace的版本信息.
-x 以十六进制形式输出非标准字符串
-xx 所有字符串以十六进制形式输出.
-a column
设