Qt Creator:以处理器亲和力启动程序

Qt Creator: start programm with processor affinity

我需要为嵌入式设备调试应用程序。此应用程序的问题可能与时间相关,因此我尝试降低开发机器上的执行速度。

我有一个非常有用的设置,但为了方便需要稍微调整一下,基本上我遵循了这里给出的建议:

https://blogs.msdn.microsoft.com/vijaysk/2012/10/26/tools-to-simulate-cpu-memory-disk-load/

文章中链接的工具 "CPUSTRES.exe" 会产生很高的 CPU 使用率。为了防止工具吃掉我所有的 CPU 我这样启动它(该工具只会 运行 在第 8 个核心上):

START "Stress" /affinity 0x80 /HIGH CPUSTRES.EXE

然后我在 Qt Creator(版本 4.1.0)中启动调试会话。使用 windows 任务管理器,我可以为应用程序设置与压力工具相同的处理器亲和力。这样做给我的应用程序或多或少像在嵌入式设备上一样迟钝,但调试器和所有其他应用程序运行良好。

我发现在任务管理器中手动设置亲和力有点不方便。我希望这个应用程序始终只在同一个单核上。这仅用于调试目的,因此不想在代码中更改它。我怎样才能做到这一点?

虽然我设法以所需的处理器亲和力启动被测应用程序,但我不会推荐它。它不会让我的生活更轻松。相反,我建议按照@ni1ight 的评论在代码中设置亲和力。

简单的方法(没有要求):

#include <windows.h>
int main(int argc, char* argv[]) {
#ifdef _DEBUG
    DWORD_PTR processAffinityMask = 1 << 7;
    HANDLE process = GetCurrentProcess();
    SetProcessAffinityMask(process, processAffinityMask);
#endif
    [...]

另一种方式(不合理):

  • 查看您项目的设置
  • 添加新的 运行 配置并选择 'custom executeable'
  • 作为可执行文件,选择一个新的 'cmd' 文件,其中包含问题中的命令 (START "" /affinity 0x80 AppUnderTest.EXE)。应该可以提供应用程序路径作为 cmd 的参数,但我没有尝试过。
  • 然后可以从创建者启动应用程序,但无法调试。
  • 将调试器附加到 运行ning 进程以调试应用程序。