windows上cursor用cppvsdbg调试进程

vscode调试c++很爽

windows上调试进程解dump,一般是用vs,但是vs毕竟是个很老的ide,相比新兴的cursor/vscode这一类ide,显得没有那么好用了

本来微软的cpptools vscode插件在cursor里直接可以使用cppvsdbg的,从某个版本开始,微软限定了cppvsdbg只能在vscode里使用, 在cursor 里使用会有报错和提示

所以cursor里调试c++,很多都转向了用code-lldb这个插件,用lldb来调试,但是这个lldb对于小项目,可用,但是对于win上的大型项目,确实是很慢很慢,几乎是不可用,受不了attach一下要loading几十秒之后才能反应过来,才开始走到下载pdb的步骤

怎么办呢,有大神已经解决了这个问题 ,具体可以参考下面这个链接

​https://gist.github.com/Ouroboros/1a1e0b9c8bcbac2a519516aa5a12a52b

具体就是先改一下 %USERPROFILE%\.cursor\extensions\ms-vscode.cpptools-1.23.5-win32-x64\package.json 这个json,
然后再改一下这个%USERPROFILE%\.cursor\extensions\ms-vscode.cpptools-1.23.5-win32-x64\debugAdapters\vsdbg\bin\vsdbg.dll
就可以了

如何hack插件

第1步的详细步骤

Remove this condition "when": "workspacePlatform == windows"

%USERPROFILE%\.cursor\extensions\ms-vscode.cpptools-1.23.5-win32-x64\package.json

   "type": "cppvsdbg",
   "label": "C++ (Windows)",
   "when1": "workspacePlatform == windows",

第2步的详细步骤

  1. Open debugAdapters\vsdbg\bin\vsdbg.dll
  2. Find 488D159E4B0600 in binary format
  3. find 74 15 a bit below it:
  4. Mark the 15 box and change to it 00:

如何安装插件

另外就是微软的vscode-cpptools默认在cursor的插件商店里是没有的,要下载下来安装,可以从vscode-cpptoolsgithhub上找release链接,然后下载下来 https://github.com/microsoft/vscode-cpptools/releases
找个想用的版本,把vsix下载下来,然后在curosr里ctrl+shift+p,输入Install From VSIX,选定刚下载的插件进行安装就可以了

配置

相比于vs,绝对的优势是对于一些库的源码映射是可以持久化 的,vs也可以添加库的源码映射,不过一般是项目级的,在重新生成sln之后,这些源码映射目录就会丢失,需要重新来搞,远不如cursor/vscode方便
另外也可以通过 core dump来直接在cursor里解析dump的崩溃栈,还可以直接把调用栈copy出来,直接丢给cursor,让cursor分析崩溃的原因并进行修复,效率大大提升
剩下就是要设置pdb的缓存目录,免得每次调试要重新下载符号文件导致调试时间变长

launch.json 如下

{
  "configurations": [
    {
      "name": "attach win",
      "type": "cppvsdbg",
      "request": "attach",
      "processId": "${command:pickProcess}",
      "sourceFileMap": {
        "d:\\jenkins\\workspace\\xx": "D:\\workspace\\cpp\\xx",
      },
      "symbolOptions": {
        "searchPaths": [
          "D:\\VsSymbols",
          "${workspaceFolder}/bin/x64/Release/myApp"
        ],
        "searchMicrosoftSymbolServer": true,
        "cachePath": "D:\\VsSymbols",
        "moduleFilter": {
          "mode": "loadAllButExcluded",
          "excludedModules": ["DoNotLookForThisOne*.dll"]
        }
      }
    },
    {
      "name": "attach win lldb",
      "type": "lldb",
      "request": "attach",
      "pid": "${command:pickProcess}"
    },
    {
      "type": "cppvsdbg",
      "request": "launch",
      "name": "Core Dump",
      "program": "${file}",
      "cwd": "${workspaceFolder}",
      "dumpPath": "${file}",
      "symbolSearchPath": "D:\\VsSymbols",
      "sourceFileMap": {
        "d:\\jenkins\\workspace\\xx": "D:\\workspace\\cpp\\xx",
      },
      "symbolOptions": {
        "searchPaths": [
          "D:\\VsSymbols",
          "${workspaceFolder}/bin/x64/Release/todesk"
        ],
        "searchMicrosoftSymbolServer": true,
        "cachePath": "D:\\VsSymbols",
        "moduleFilter": {
          "mode": "loadAllButExcluded",
          "excludedModules": ["DoNotLookForThisOne*.dll"]
        }
      }
    }
  ],
  "inputs": [
    {
      "id": "coreFileName",
      "type": "promptString",
      "description": "Enter core file path"
    }
  ]
}
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐