我想要统计某个函数或代码行在测试运行期间执行的频率。 我的想法是在一行中使用GDB设置一个跟踪点,然后计算跟踪点的击中频率。 任何人都可以告诉我,如何/如何实现。 我可以找到的跟踪点的唯一功能是获取寄存器的快照或保存变量的值。我认为我的答案可能与帐户价值有关,但我不知道如何实施我想要的。在GDB中使用跟踪点来跟踪代码执行的频率
如果需要了解更多信息或细节,请让我知道,
谢谢, 戴夫
我想要统计某个函数或代码行在测试运行期间执行的频率。 我的想法是在一行中使用GDB设置一个跟踪点,然后计算跟踪点的击中频率。 任何人都可以告诉我,如何/如何实现。 我可以找到的跟踪点的唯一功能是获取寄存器的快照或保存变量的值。我认为我的答案可能与帐户价值有关,但我不知道如何实施我想要的。在GDB中使用跟踪点来跟踪代码执行的频率
如果需要了解更多信息或细节,请让我知道,
谢谢, 戴夫
以下question/answer提供了一个非常好的技巧来计数。我认为这样可以毫不含糊地解决你的问题。
HTH!
谢谢,这听起来像我以后! – user2342775 2013-05-02 13:33:46
我从来没有使用跟踪点,但你可以实现使用断点相同。 只要定义一个断点,事后这样定义
command <breakpoint no.>
continue
end
这是一个命令将导致GDB简单地继续断点命中后,但它仍然增加命中计数器。请注意,这会显着减慢您的流程。 如果您在Linux上,另一个选择是valgrind(callgrind子命令)。
谢谢,这听起来像我以后! – user2342775 2013-05-02 13:34:22
可能重复的[如何为GDB断点设置一个'计数器](http://stackoverflow.com/questions/2956889/how-to-set-a-counter-for-a-gdb-breakpoint) – user1937198 2013-08-31 19:49:59