我需要调试嵌入式设备的应用程序。此应用程序的问题可能与时序有关,因此我尝试降低开发计算机上的执行速度。
我有一个非常有用的设置但需要稍微调整以方便,基本上我遵循这里给出的建议:
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任务管理器,我可以像压力工具一样为应用程序设置相同的处理器关联。这样做给了我一个应用程序,或多或少像嵌入式设备上的缓慢,但调试器和所有其他应用程序表现良好。
我觉得手动设置任务管理器中的亲和力有点不方便。我希望这个应用程序始终只在同一个核心上。这仅用于调试目的,因此不希望在代码中更改此内容。我怎样才能做到这一点?
答案 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的参数提供,但我没有尝试这个。