C++ 如何在VisualStudio或CLion调试器中单步执行ispc源文件?
我刚刚开始使用(英特尔SPMD程序编译器),我能够编译并运行发行版提供的示例。接下来我想做的是能够在VisualStudio(或CLion)调试器中单步执行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
.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.