在 Linux 程序中,一个进程中有多个线程。一些线程正在调用clock_gettime(CLOCK_MONOTONIC, &time) ; 为了计算超时值,例如查看某些操作是否已在规定时间内完成。如果系统正常运行的话,这是完美的。但是,如果进程被某个 GDB 断点停止,Linux 系统计时器会在后台继续计数,并且如果 GDB 继续执行该进程,则会超出所有超时值。
有人能告诉我,当 GDB 由于断点而停止进程时,是否有办法启动/停止(进程本地)计时器?
作为替代方案,我可以创建自己的计时器系统,该系统将由系统计时器的信号触发,但随后我需要在 GDB 停止进程时阻止这些信号。这可能吗 ?
小智 0
我知道的唯一方法有点问题......
将 CLOCK_MONOTONIC 的所有使用更改为 CLOCK_PROCESS_CPUTIME_ID
Run Code Online (Sandbox Code Playgroud)CLOCK_PROCESS_CPUTIME_ID (since Linux 2.6.12) A clock that measures (user and system) CPU time consumed by (all of the threads in) the calling process.
当 gdb 停止进程时它就会停止。
我说有点问题有几个原因......
作为“帮助我调试黑客”,它有点起作用,所以也许可以使其可切换。
| 归档时间: |
|
| 查看次数: |
280 次 |
| 最近记录: |