c++ - 在 Visual C++ 中创建自定义性能计数器

标签 c++ visual-c++ performancecounter

有人知道使用普通非托管 Visual C++ 创建自定义性能计数器的方法吗?

我知道使用托管 C++ 可以轻松完成,但我需要使用非托管 Windows 服务来完成。

我也知道您可以检索性能计数器数据,但我需要创建一些自定义计数器并在应用程序运行时递增它们。

最佳答案

对添加 C++ 性能计数器的支持在 Vista 及更高版本中发生了变化。另一个答案中建议的性能 DLL 方法仍然有效,但描述的新技术 here更易于使用。

在这种方法中,您编写一个描述您的计数器的 list ,运行 CTRPP,这是一个从您的 list 生成代码的工具。编译此代码并将其与您的应用程序链接,并添加一个初始化进程的调用(它启动一个后台线程),并添加代码以根据需要更新计数器。发布计数器的细节由运行生成代码的后台线程处理。

您还需要运行 lodctr/m:[manifest file] 来注册您的计数器,然后才能使用它们。这必须以管理员身份运行。

顺便说一句:另一个程序 unlodctr 反转 lodctr 的效果,如果您对计数器进行任何更改,则必须使用它,因为没有“替换”操作,只能删除旧的,然后安装新的。

以上所有内容的文档简直糟透了。例如 lodctr 完全针对 Vista 进行了重写,但是 MSDN 中的文档都是针对 XP 版本的,不再适用。如果您访问 MSDN,请随意使用“此文档没有帮助”按钮,也许 Microsoft 会收到消息。

关于c++ - 在 Visual C++ 中创建自定义性能计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55753/

相关文章:

c++ - 属性表 (MFC) 的 RTL 布局问题

c++ - ld : symbol(s) not found for architecture x86_64 on OSX 10. 9

c++ - C++文件输出函数中的神秘内存泄漏

visual-c++ - 使用 Direct2D 绘制圆形进度条

c++ - GNU C++ 无法创建常量自定义类实例的 vector

在 C 中使用 `perf_event` 计算 CPU 周期产生与 `perf` 不同的值

java - Spring Boot 中 Rest Api 的计数器指标

c# - 如何访问代码中的 C# 性能计数器?

c++ - 将图像指针返回给 Erlang

c++ - [[no_unique_address]] 和两个相同类型的成员值