rod*_*ion 4 c linux debugging ptrace
在Linux机器上,我使用带有PTRACE_SINGLESTEP参数的ptrace来计算程序的机器指令数.我遵循了这篇文章:http://www.ncsu.edu/it/mirror/ldp/LDP/LGNET/81/sandeep.html.
但是,结果对我来说似乎很奇怪.对于一个非常简单的程序,计算超过95000台机器指令.测试程序是
int main(void) { return 23; }
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?该文章的代码是错误的吗?(我看不出它有什么问题.)如果没有,是什么导致这么简单的程序要求> 95000指令?
您正在编译的C程序链接到C库.它包含_start程序执行开始的符号.此时,C库初始化自己并最终调用main.后main返回,控制流回到_start和有一堆其他指令来执行,并返回程序的返回值.请注意,PTRACE_SINGLESTEP连续使用不计算编译指令的数量.它计算执行指令的数量.这意味着在进入main,执行main和退出之前执行95k指令main.
| 归档时间: |
|
| 查看次数: |
1170 次 |
| 最近记录: |