Отладка библиотеки DLL C с помощью VSCode вместо Visual Studio

#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"
}