使用dtrace时arg0和arg1有什么区别。
dtrace -n 'profile-997 /arg0/ { @[stack()] = count() }
dtrace -n 'profile-997 /arg1/ { @[ustack()] = count() }
例如,上面的两个脚本记录每个堆栈的编号。我只是想知道为什么arg0表示它是内核堆栈,而arg1表示用户空间堆栈。
答案 0 :(得分:2)
那是设计使然。
配置文件提供程序收到两个参数,如果CPU以内核模式运行,则将arg0设置为PC;如果CPU以用户态运行,则arg1拥有PC。另一个参数设置为零,因此可以很简单地检测CPU状态。