【问题标题】:How can I get the code coverage information for a C program who trapped in infinite loop?如何获取陷入无限循环的 C 程序的代码覆盖率信息?
【发布时间】:2018-09-18 14:48:43
【问题描述】:

我需要获取大量 C 程序的代码覆盖率信息。我只需要知道每一行是否被执行。但是,其中一些永远不会因为无限循环而结束。大多数工具,例如像gcov,llvm-cov,只有在程序结束后才能获取程序的信息。 我为所有程序设置了时间限制。如果它的执行时间超过限制时它没有结束,它的进程将被杀死。但是,当它的进程被杀死时,存储在内存中的所有信息都会被清除。所以我无法获得这些程序的代码覆盖率信息。我该怎么做?

【问题讨论】:

  • 如果你用 Ctrl+C 打断会发生什么?
  • 转储信息的工具可能隐含在程序末尾,不是吗?你能明确地做到这一点吗?然后你可以在第一次做无限循环时转储,最后。
  • 如果我用Crtl+C打断它,所有存储在内存中的信息都会丢失。所以我什么也得不到。
  • 是的,我使用像 llvm-cov 和 gcov 这样的工具。他们俩似乎都在程序结束时转储了信息。而且我不知道我是否可以明确地做到这一点。

标签: c gcc clang code-coverage


【解决方案1】:

一个简单的解决方案是在程序中添加一个小定时器中断,它会在几秒钟的“不良行为”后引发异常并导致程序正常终止。

当以您似乎想要的临时方式进行搜索和探测时,只要您在发现错误时立即删除黑客,“破解它”是完全合法的。..

【讨论】:

    猜你喜欢
    • 2019-02-25
    • 2021-09-26
    • 2015-01-12
    • 2011-12-18
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 2015-04-02
    • 1970-01-01
    相关资源
    最近更新 更多