2011-03-31 28 views
0

我有一个C程序,它使用了一个定时器,当定时器到期时程序做了一些事情(设置一个标志)。在定时器功能中使用GDB

我的问题是:当我设置断点并使用GDB运行程序,并使用“step”逐行检查时,计时器是否继续在后台打勾?或者它会暂停,直到我再次按下“s”(下一步)?

+0

你的计时器是如何实现的? – nmichaels 2011-03-31 15:58:42

+0

[timer_create](http://linux.die.net/man/3/timer_create)? – nmichaels 2011-03-31 16:26:04

+0

你是对的。 – kingsmasher1 2011-03-31 16:35:35

回答

2

假设你使用了CLOCK_REALTIME,是的。计时器将一直保持打勾状态,如果您花费大量时间查看单个指令,则会在下次执行程序中的某个指令时发送信号。在2.6.12之后,你可以在Linux中使用CLOCK_THREAD_CPUTIME_IDCLOCK_PROCESS_CPUTIME_ID,但这些可能不会让你得到你想要的,因为它们不测量挂钟时间。

+0

非常感谢,这是非常有用的信息。添加一个问题:)我看到如果我这样做(花了一堆时间:))在某些时候timer_delete失败后,说无效输入(即timer_id)不再有效。为什么这样?我在timer_setttime中使用了SIGEV_THRAED,在timer_create中使用了CLOCK_REALTIME。 – kingsmasher1 2011-03-31 16:56:03