Qt Creator:启动具有处理器关联性的程序

时间:2017-03-30 08:18:54

标签: windows qt qt-creator 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任务管理器,我可以像压力工具一样为应用程序设置相同的处理器关联。这样做给了我一个应用程序,或多或少像嵌入式设备上的缓慢,但调试器和所有其他应用程序表现良好。

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

1 个答案:

答案 0 :(得分:0)

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

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

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

另一种方法(这是不合理的):

  • 查看项目的设置
  • 添加新的运行配置并选择“自定义可执行”
  • 作为可执行文件,使用命令(START "" /affinity 0x80 AppUnderTest.EXE)中的命令选择一个新的“cmd”文件。应该可以将应用程序路径作为cmd的参数提供,但我没有尝试这个。
  • 然后可以从创建者启动应用程序,但无法进行调试。
  • 将调试器附加到正在运行的进程以调试应用程序。