使用适用于 Visual Studio 的英特尔 SDK 调试 OpenCL 不会在断点处停止

标签 debugging visual-studio-2013 opencl

我想通过 Intel SDK 和 Visual Studio 2013 调试我的 OpenCL 代码,但调试器不会在断点处停止。 我启用了 OpenCL 内核调试并将构建选项设置为 -g -s 并在 opencl 代码中添加了一个断点(我也不使用任何偏移量)。

我还尝试了其他地方提到的所有巫术,包括。

  • 在上下文创建时(/之后)设置断点。*
  • 同时仅使用 Visual Studio 实例
  • 开始调试前向左肩吐口水三遍
  • ...

但没有任何效果。有什么建议吗?

*这会导致以下情况,在到达断点之前,OCL 断点被标记为不可到达,之后它们显示为可通过文件和代码行到达。

最佳答案

您使用哪个设备进行调试? 仅允许使用 intel CPU 进行 intel SDK 调试。 英特尔显卡无法工作。

检查以下内容: 你使用intel编译器而不是MSVC编译器吗? 右键单击项目 -> 转换为 opencl 项目/使用 intel c++ 编译器

编译器设置: Code_builder 菜单 -> opencl 调试器 -> 选项

勾选“启用opencl内核调试” 指定您要调试的工作项(0,0,0 即可,如果您仅使用全局工作组大小而不使用本地工作组大小,则为第一个线程)

tab api 调试器:勾选启用 opencl api 调试器

在 -g -s 之后,您必须添加内核路径,例如:

options = " -g -s E:\\prog\\clproj\\Clproj\\kernel.cl";

您是否像这样将选项 char* 交给了 clBuildProgram?

clBuildProgram(program, 0, NULL, options, NULL, NULL);

确保您使用 intel opencl 库而不是任何其他 opencl 库。

要正确设置 Vstudio,请查看此处:

intel guide

关于使用适用于 Visual Studio 的英特尔 SDK 调试 OpenCL 不会在断点处停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30732614/

相关文章:

c++ - clGetDeviceIds 返回 -1

javascript - 当我点击网页中的某个元素时,如何监控正在触发的 JavaScript?

debugging - 安装 VC++ 调试运行时分发包

ios - UIApplicationMain 的 EXC_BAD_ACCESS - 如何解释此回溯?

c++ - 优先队列声明 C++

c++ - 在 Visual Studio 2013 Express 中运行谷歌测试

windows - Windbg 故障转储中的性能计数器

.net - Visual Studio 2013 中的 objective-c PU 和平台有什么区别?

opencl - cl_datatype 和普通数据类型有什么区别

c - 为什么相同显卡但不同机器上的 opencl 代码存在基准差异?