所以我为我的c ++游戏构建了我的构建系统,gulp.js调用cl.exe和link.exe来构建游戏。我正在生成一个输出pdb文件的构建,非常确定我已经打开了所有调试符号。
游戏构建正常,但我想将它连接到vscode调试器。
现在我在网上看到的绝大多数设置都有人为调试器设置了launch.json,他们正在使用gdb。我不介意使用gdb,真的只关心它的工作原理。但我正在使用cl.exe和link.exe生成二进制文件。无论如何,我的启动器将启动可执行文件,但它就像调试器没有附加。例如没有断点。
以前我用mingw建造,一切都很好。我想改为cl.exe和link.exe,但我怀疑这是调试器没有附加的原因。
GDB不是vscode调试器;它是您可以在vscode中指定的调试器,前提是您还使用编译器和链接器生成包含GDB可识别形式的调试信息的二进制文件。
Microsoft cl
和link
不是这样的编译器和链接器。 GDB是the GNU debugger,由GNU GCC编译器支持 - gcc
,g++
,gfortran
,gnat
,gccgo
- 和GNU binutils
linkers。 Microsoft .pdb
调试数据库对GDB没有任何意义:它只能由MS Visual Studio调试器使用。
如果使用cl
选项/Z7
进行编译,那么PE/COFF
调试信息将嵌入到您的目标文件中,如果您链接选项/DEBUG:NONE
,链接器将不会生成.pdb
。然后,您可能会发现GDB能够令人满意地调试您的可执行文件,但我无法保证这一点。