为什么程序在GDB下运行时执行的指令数量有所不同?

问题描述 投票:1回答:1

我正在使用ARM PMU计数器来计算进程在两次系统调用之间执行的指令数。特别是我使用“INST_RETIRED”事件来计算进程在用户模式下执行的指令数。 Reference: ARMv7 R/A Reference Manual。如果我在自由模式下或在GDB下运行程序,则指令数是一致的。当我尝试使用pthread_create创建线程时出现问题。当我在GDB下运行它时,同一程序在两个系统调用mprotect和clone之间执行的指令数(由函数pthread_create执行)是不同的。这意味着用户程序在调试器下运行时执行一些不同的代码,可能在库libpthread中。我已经看到了pthread_create的源代码,但找不到与trace / debug标志相关的任何内容。 Copuld任何人请指导我,这个来自何处的这个意外?

arm gdb pthreads glibc performance-monitor
1个回答
0
投票

我已经看到了pthread_create的源代码,但找不到与trace / debug标志相关的任何内容

实际上有这样的代码hereherereport_events仅在调试器下运行时设置为true。

© www.soinside.com 2019 - 2024. All rights reserved.