#c #visual-studio #debugging #visual-studio-code #dll
Вопрос:
Я работаю над проектом, в котором мне нужно отладить DLL/библиотеку C . У меня есть исходные файлы DLL/PDB/H/, и мне нужен «Клиент» для вызова библиотеки DLL, чтобы я мог отлаживать некоторые функции.
До сих пор у меня в Visual Studio есть решение для «DLL-клиента». Чтобы это работало, мне пришлось добавить мои «Дополнительные каталоги включения» (файл .h), путь к dll в «Компоновщике» и выполнить xcopy dll/pdb в «Событиях сборки». Это работает, но мне не очень нравится интерфейс visual studio, и я хочу попробовать кодировать/отлаживать с помощью VSCode.
Мой клиент до сих пор очень прост:
#include <iostream>
#include "mydll.h"
int main()
{
char version[20];
GetVersion(version);
std::cout << "Version: " << version << 'n';
}
Моя библиотека DLL создана с помощью файла makefile. У меня возникли проблемы с тем, как настроить мой launch.json (или что настроить) в VSCode, чтобы добавить каталоги включения и информацию о pdb, чтобы при запуске моего клиента dll/pdb была связана с клиентом.
launch.json-это vscode по умолчанию только с изменением имени
{"configurations": [
{
"name": "(gdb) DLL Client",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceRoot}/dllclient.out",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerPath": "C:\MinGW\bin\gdb.exe",
"setupCommands": [
{
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
Какая-нибудь помощь? Спасибо
Комментарии:
1. Вам, вероятно, нужно также показать
launch.json
, используете ли вы расширение Makefile tools: https://devblogs.microsoft.com/cppblog/now-announcing-makefile-support-in-visual-studio-code/2. @drescherjm я проверю это
Ответ №1:
Итак, я не знаю, является ли это лучшим решением, но это то, что я мог бы найти. Вероятно, есть какой-то способ улучшить это с помощью расширения vscode на языке C .
launch.json (для отладки)
{"configurations": [
{
"name": "(gdb) VCVarsall 32",
"type": "cppvsdbg",
"request": "launch",
"program": "${workspaceFolder}\main.exe",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"targetArchitecture": "x86",
"miDebuggerPath": "C:\MinGW\bin\gdb.exe",
"preLaunchTask": "C : vcvarsall Main 32",
},
]}
задачи.json (для создания main и связывания библиотеки)
{
"tasks": [
{
"type": "process",
"label": "C : vcvarsall Main 32",
"command": "cmd",
"options": {"cwd": "${workspaceFolder}"},
"args": ["/C vcvarsall x86 amp;amp; cl /Od /Zi /EHsc /Fd:vc140.pdb /Fo:main.obj ./main.cpp /I ${workspaceFolder}\dev /link ${workspaceFolder}\libs\mylibrary.lib /OUT:main.exe /PDB:vc140.pdb"
],
"group": {
"kind": "build",
"isDefault": true
},
}
],
"version": "2.0.0"
}