如何防止Visual Studio 2015 Update 2添加telemetry_main_invoke_trigger?

11

一个简单的C++控制台应用程序

int main()
{
  return 0;
}

在Visual Studio 2015 Update 2中编译会在Debug和Release二进制文件中添加对telemetry_main_invoke_trigger的调用。

图片描述

我该如何防止这种情况发生?


完整的帖子在Reddit上 - Marco A.
1个回答

10
根据微软Visual C++团队的开发经理Steve Carroll所说,您可以通过在链接器的命令选项中添加notelemetry.obj来删除遥测调用:

enter image description here

Steve Carroll解释说,这将在即将推出的Update 3中被删除:

我们的意图是良性的 - 我们的愿望是建立一个框架,以帮助调查性能问题并提高我们的优化器质量,如果我们在领域中遇到任何减速或流行病性性能问题。我们为未包含CRT源而进一步提高了怀疑水平而道歉,这只是我们的疏忽。尽管如此,您们中的一些人已经详细调查了这个机制的工作方式。正如您们已经指出的那样,代码所做的是触发一个ETW事件,当它打开时,会发出时间戳和模块加载事件。只有当客户向我们提供符号信息(即PDB)时,才能解释事件数据,因此此数据仅适用于积极寻求我们帮助并愿意共享这些PDB作为其调查的一部分的客户。到目前为止,我们实际上还没有与任何客户进行过这种全面的练习,因此我们迄今仍依靠我们已经建立的方法来调查和解决潜在问题。我们计划在Update 3中删除这些事件。同时,在Update 2中删除此依赖项,您应将notelemetry.obj添加到您的链接器命令行。


我可以在源代码中使用 #pragma comment lib 行将其添加进去吗? - Lothar
它似乎无法工作。我最终得到了 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\notelemetry.obj : warning LNK4003: invalid library format; library ignored 的警告,并且遥测存根仍然存在于二进制文件中。 - Joel
这是x86版本,如果您编译x64版本,则必须使用来自amd64的库。 - magicandre1981

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接