我正在使用 Microsoft.CodeCoverage 收集 C++ 的代码覆盖率(来自模糊测试)。
由于如果检测的应用程序崩溃,覆盖率不会终止(这就是我标记模糊测试错误的方式),因此我需要转向服务器模式覆盖率收集。这意味着我需要一个会话 ID 来进行报道。
我正在使用
进行覆盖率检测Microsoft.CodeCoverage.Console.exe instrument <my_program.exe> --session-id <session_string>
在此模式下,会话 ID 在检测时会内置到映像中,第二次检测尝试将失败,并显示:
Module was not instrumented. Reason: optimized_or_instrumented.
两个问题:
1 - 检查程序是否已检测:您可以尝试再次运行检测命令。如果您收到一条错误消息,表明它已经检测完毕,那就证实了这一点。另一种方法是使用 dumpbin(来自 Visual Studio)等工具检查程序的二进制文件,以查找与覆盖率相关的信息。
2 - 查找会话 ID:没有直接命令可以从检测程序中获取会话 ID。您也许可以在覆盖率报告或日志中找到它。如果没有,您需要使用新的会话 ID 重新安装程序。