C 在计时器函数中使用GDB
我有一个C程序,它使用一个计时器,当计时器过期时,程序会做一些事情(设置一个标志)C 在计时器函数中使用GDB,c,linux,timer,gdb,C,Linux,Timer,Gdb,我有一个C程序,它使用一个计时器,当计时器过期时,程序会做一些事情(设置一个标志) 我的问题是:当我设置断点并使用GDB运行程序,并使用“step”逐行检查时,计时器是否在后台一直滴答作响?或者在我再次按下“s”键(下一步)之前它会停止吗?假设您使用了时钟\u REALTIME,是的。计时器会一直滴答作响,如果你花很多时间看一条指令,它会在下一次执行程序时发送信号。您可以在2.6.12之后的Linux中使用CLOCK\u-THREAD\u-CPUTIME\u-ID或CLOCK\u-PROCESS
我的问题是:当我设置断点并使用GDB运行程序,并使用“step”逐行检查时,计时器是否在后台一直滴答作响?或者在我再次按下“s”键(下一步)之前它会停止吗?假设您使用了
时钟\u REALTIME
,是的。计时器会一直滴答作响,如果你花很多时间看一条指令,它会在下一次执行程序时发送信号。您可以在2.6.12之后的Linux中使用CLOCK\u-THREAD\u-CPUTIME\u-ID
或CLOCK\u-PROCESS\u-CPUTIME\u-ID
,但这些可能无法满足您的需求,因为它们不测量墙上的时钟时间。计时器是如何实现的?非常感谢,这是非常有用的信息。添加一个问题:)我看看我是否这样做(花一段时间:))在计时器删除失败后,说无效输入(即计时器id)不再有效。为什么会这样?我在timer\u setttime中使用SIGEV\u THRAED,在timer\u create中使用CLOCK\u REALTIME。