Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在VisualStudio或CLion调试器中单步执行ispc源文件?_C++_Visual Studio_Debugging_Debug Symbols_Ispc - Fatal编程技术网

C++ 如何在VisualStudio或CLion调试器中单步执行ispc源文件?

C++ 如何在VisualStudio或CLion调试器中单步执行ispc源文件?,c++,visual-studio,debugging,debug-symbols,ispc,C++,Visual Studio,Debugging,Debug Symbols,Ispc,我刚刚开始使用(英特尔SPMD程序编译器),我能够编译并运行发行版提供的示例。接下来我想做的是能够在VisualStudio(或CLion)调试器中单步执行.ispc文件 根据,可以指示ispc编译器使用-g选项发出调试符号。我已经将其添加到提供的CMakeLists.txt,但我似乎无法让Visual Studio真正进入ispc功能 例如,我在这里的simple示例中设置了一个断点: 单击“单步执行”时,我希望Visual Studio能够单步执行该函数的定义,如下所示:。相反,Visual

我刚刚开始使用(英特尔SPMD程序编译器),我能够编译并运行发行版提供的示例。接下来我想做的是能够在VisualStudio(或CLion)调试器中单步执行
.ispc
文件

根据,可以指示
ispc
编译器使用
-g
选项发出调试符号。我已经将其添加到提供的
CMakeLists.txt
,但我似乎无法让Visual Studio真正进入ispc功能

例如,我在这里的
simple
示例中设置了一个断点:

单击“单步执行”时,我希望Visual Studio能够单步执行该函数的定义,如下所示:。相反,VisualStudio将继续使用
simple.cpp

我怀疑Visual Studio或者找不到由
ispc
编译器生成的调试符号,或者不知道这些符号与
simple.ispc
文件关联

我从去年发现,其中包括:

最新版本的ispc(1.9.2)支持使用Visual Studio进行有限的调试。用bool检查struct似乎不起作用,locals窗口很不确定,但或多或少起作用。单步工作。分析是可行的,但似乎有点不确定

所以很明显这是可能的;我只是不太了解编译器、调试器和IDE是如何相互作用的。有人知道如何做到这一点吗

使用Visual Studio 2017(v15.9.17)运行Windows 10(v1903)


结果是我在错误的位置添加了
-g
标志

ISPC示例包括一个“主”CMake文件,该文件具有一系列公共选项,称为
AddISPCExample.CMake
。每个示例都会执行此文件。每个示例还包括自己的
CMakeLists.txt
,以及自己的选项。我最初通过添加以下行进行了修改:

    # add debug flag
    target_compile_options(${example_NAME} PRIVATE -g)
在更仔细地检查生成输出后,发现这导致
-g
标志被添加到
simple.exe
([2/3]命令下面)的MSVC编译器标志中,而不是添加到
simple.ispc
([1/3]命令下面)的ispc编译器标志中:

相反,我通过添加
-g
标志进行了修改:

set (ISPC_FLAGS -O2 -g)
这将导致
-g
标志被传递到ispc编译器的命令行(在下面的[2/3]中):

现在,设置断点并进入ispc文件可以正常工作(尽管UI有点不稳定):


结果是我在错误的位置添加了
-g
标志

ISPC示例包括一个“主”CMake文件,该文件具有一系列公共选项,称为
AddISPCExample.CMake
。每个示例都会执行此文件。每个示例还包括自己的
CMakeLists.txt
,以及自己的选项。我最初通过添加以下行进行了修改:

    # add debug flag
    target_compile_options(${example_NAME} PRIVATE -g)
在更仔细地检查生成输出后,发现这导致
-g
标志被添加到
simple.exe
([2/3]命令下面)的MSVC编译器标志中,而不是添加到
simple.ispc
([1/3]命令下面)的ispc编译器标志中:

相反,我通过添加
-g
标志进行了修改:

set (ISPC_FLAGS -O2 -g)
这将导致
-g
标志被传递到ispc编译器的命令行(在下面的[2/3]中):

现在,设置断点并进入ispc文件可以正常工作(尽管UI有点不稳定):

>------ Build started: Project: CMakeLists, Configuration: Debug ------
Build started 14-Nov-19 6:44:17.
RunExternalTool:
  [1/3] cmd.exe /C "cd /D "C:\Users\Daniel\CMakeBuilds\7d280c73-3384-fd31-a5a6-63248b2e8dd4\build\x64-Debug (default)\simple" && C:\bin\ispc.exe C:/Users/Daniel/Downloads/ispc-v1.12.0-windows/examples/simple/simple.ispc -O2 -g --target=sse2 --arch=x86-64 -h "C:/Users/Daniel/CMakeBuilds/7d280c73-3384-fd31-a5a6-63248b2e8dd4/build/x64-Debug (default)/simple/simple_ispc.h" -o "C:/Users/Daniel/CMakeBuilds/7d280c73-3384-fd31-a5a6-63248b2e8dd4/build/x64-Debug (default)/simple/simple_ispc.obj""
  [2/3] C:\PROGRA~2\MICROS~1\2017\ENTERP~1\VC\Tools\MSVC\1416~1.270\bin\HostX64\x64\cl.exe  /nologo /TP  -Isimple /DWIN32 /D_WINDOWS /W3 /GR /EHsc /MDd /Zi /Ob0 /Od /RTC1   /fp:fast /Oi /showIncludes /Fosimple\CMakeFiles\simple.dir\simple.cpp.obj /Fdsimple\CMakeFiles\simple.dir\ /FS -c C:\Users\Daniel\Downloads\ispc-v1.12.0-windows\examples\simple\simple.cpp
  [3/3] cmd.exe /C "cd . && "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\CMake\CMake\bin\cmake.exe" -E vs_link_exe --intdir=simple\CMakeFiles\simple.dir --manifests  -- C:\PROGRA~2\MICROS~1\2017\ENTERP~1\VC\Tools\MSVC\1416~1.270\bin\Hostx64\x64\link.exe /nologo simple\simple_ispc.obj simple\CMakeFiles\simple.dir\simple.cpp.obj  /out:simple\simple.exe /implib:simple\simple.lib /pdb:simple\simple.pdb /version:0.0  /machine:x64 /debug /INCREMENTAL /subsystem:console  kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib && cd ."
  LINK : simple\simple.exe not found or not built by the last incremental link; performing full link

Build succeeded.