[英]Debug C++ DLL with VSCode instead of Visual Studio
我正在處理一個需要調試 C++ DLL/Lib 的項目。 我有 DLL/PDB/H/Source 文件,我需要一個“客戶端”來調用 DLL,這樣我就可以調試一些功能。
到目前為止,我在 Visual Studio 中有一個“DLL 客戶端”的解決方案。 為了讓它工作,我必須添加我的“附加包含目錄”(the.h 文件),“鏈接器”上的 dll 路徑,並在“構建事件”中執行 dll/pdb 的 xcopy。 這是可行的,但我不太喜歡 visual studio 界面,想嘗試使用 VSCode 進行編碼/調試。
到目前為止,我的客戶非常簡單:
#include <iostream>
#include "mydll.h"
int main()
{
char version[20];
GetVersion(version);
std::cout << "Version: " << version << '\n';
}
我的 DLL 是用 makefile 制作的。我在如何在 VSCode 上設置我的 launch.json(或設置什么)以添加包含目錄和 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
}
]
}
]
}
有什么幫助嗎? 謝謝
所以,我不知道它是否是最好的解決方案,但這是我能找到的解決方案。 可能有一些方法可以通過 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",
},
]}
tasks.json(建立主要和鏈接圖書館)
{
"tasks": [
{
"type": "process",
"label": "C++: vcvarsall Main 32",
"command": "cmd",
"options": {"cwd": "${workspaceFolder}"},
"args": ["/C vcvarsall x86 && 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"
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.