我在 Microsoft HPC 上运行简单代码 (Hello World) 时遇到问题。代码有一个断点。在调试模式下编译代码后,当我通过 IScheduler 将可执行文件提交到节点(我正在使用的那个)时,它不会遇到断点,但是如果我只是直接在节点上调试代码(同一个节点我'm on) ,它到达断点。为什么我通过 HPC IScheduler 提交时没有命中?当我使用 HPC IScheduler 时,它显示“当前不会命中断点。没有为此文档加载任何符号。”
1 回答
如果我理解正确;您正在以两种方式运行应用程序进行测试。一个在本地不使用 HPC 集群(您的环境所在的位置与此无关),然后再次使用 HPC 集群。当您在本地运行它时,您可以在断点被命中时进行调试,但是当您通过 HPC 集群运行它时,您无法命中断点。
问题在于,当您通过代表 HPC 集群的 IScheduler 运行某些东西时(无论是通过代理运行的 SOA 作业还是命令行或 MPI 作业),它在不同的进程下运行。应用程序开始在 HPC Worker 进程下运行。如果您想在应用程序通过节点上的 HPC 集群运行时对其进行调试,则需要附加到分配给它的进程(该节点上运行的每个任务将有 1 个 HPC 工作进程),就像如果您尝试调试 WebService 项目、WCF 项目或 Windows 服务,您会这样做。假设您只运行 1 个任务作业,您应该能够保持任务管理器打开以查看该进程何时启动以获取其 PID。
如果您运行的是 HPC 2008 R2 和 Visual Studio 2010,您可以在此处安装 Microsoft 提供的调试工具;http://www.microsoft.com/en-us/download/details.aspx?id=21705 请注意,这些工具在 Visual Studio 2012 中不起作用,在 HPC Pack 2012 中也不起作用,我不能保证任何版本早于 2008 R2 版本,因为我没有使用这些版本进行测试。
在最初的 HPC Pack 2012 测试版中,微软曾提到当前的 2008 R2 工具无法在 HPC Pack 2012 中运行,但这些工具的新版本可能会在 HPC Pack 2012 的第一个 Service Pack 版本中发布;但是我还没有看到任何关于它的时间表的信息。