Отладочный код Vscode C++, созданный с помощью cl.exe и /link.exe — отладчик не подключается

Итак, я построил свою систему сборки для своей игры на С++ с помощью gulp.js, вызывающего cl.exe и link.exe для сборки игры. Я создаю сборку, которая выводит файл pdb, почти уверен, что у меня включены все символы отладки.

Игра строится нормально, но я хотел бы подключить ее к отладчику vscode.

Теперь подавляющее большинство настроек, которые я видел в Интернете, где кто-то настраивает launch.json для отладчика, они используют gdb. Я не возражаю против использования gdb, мне важно, чтобы он работал. Но я создаю двоичные файлы с cl.exe и link.exe. В любом случае мой лаунчер нормально запустит исполняемый файл, но как будто отладчик не присоединяется. Например, без точек останова.

Раньше я строил с mingw, и все было хорошо. Вместо этого я хотел бы cl.exe и link.exe, но я подозреваю, что это причина, по которой отладчик не подключается.


person Matt Westerburg    schedule 24.02.2019    source источник


Ответы (1)


GDB не является отладчиком vscode; это отладчик, который вы можете указать в vscode при условии, что вы также используете компилятор и компоновщик, которые генерируют двоичные файлы, содержащие отладочную информацию в форме, распознаваемой GDB.

Microsoft cl и link не являются такими компиляторами и компоновщиками. GDB — это отладчик GNU, поддерживаемый GNU Компиляторы GCCgcc, g++, gfortran, gnat, gccgo — и линкеры GNU binutils. База данных отладки Microsoft .pdb ничего не значит для GDB: она может использоваться только отладчиком MS Visual Studio.

При компиляции с параметром cl /Z7 , то PE/COFF информация об отладке будет встроена в ваши объектные файлы, и если вы свяжете с параметром /DEBUG:NONE компоновщик не будет генерировать .pdb. Затем вы можете обнаружить, что GDB может удовлетворительно отладить ваш исполняемый файл, но я не могу за это поручиться.

person Mike Kinghan    schedule 25.02.2019