Windows下使用VSCode远程debug LevelDB

基本思路

  1. 远程主机成功编译leveldb
  2. 由于levedb是一个库,需写一个测试程序调用它
  3. 远程调试这个测试程序

具体步骤

1. 本地环境准备

本地需可以进行远程C/C++调试,环境搭建参见Windows + VSCode SSH实现远程C/C++开发

2. 远程主机准备

  1. 远程主机需准备levelDB编译环境。

    git clone --recurse-submodules https://github.com/google/leveldb.git
    cd leveldb
    mkdir -p build && cd build
    cmake -DCMAKE_BUILD_TYPE=Debug .. && cmake --build .
    
  2. 编写测试程序
    在leveldb目录下新建test文件件,新增文件ldbtest文件,内容如下:

    #include <iostream>
    
    #include "leveldb/db.h"
    
    using namespace std;
    using namespace leveldb;
    
    int main() {
      DB* db;
      Options op;
      op.create_if_missing = true;
      Status s = DB::Open(op, "/tmp/testdb", &db);
    
      if (s.ok()) {
        cout << "create successfully" << endl;
        s = db->Put(WriteOptions(), "abcd", "1234");
        if (s.ok()) {
          cout << "put successfully" << endl;
          string value;
          s = db->Get(ReadOptions(), "abcd", &value);
          if (s.ok()) {
            cout << "get successfully,value:" << value << endl;
          } else {
            cout << "get failed" << endl;
          }
        } else {
          cout << "put failed" << endl;
        }
      } else {
        cout << "create failed" << endl;
      }
      delete db;
      return 0;
    }
    
  3. 编写编译脚本。在leveldb目录下新建文件build.sh内容如下:

    cd ./build
    cmake --build .
    cp libleveldb.a ../test
    cd ../test
    g++ -g ldbtest.cpp -o ldbtest libleveldb.a  -I../include -lpthread
    

3.本地主机VSCode准备

  1. 配置远程debug之后,打开远程主机的leveldb目录
  2. 设置C/C++配置文件。打开命令面板【ctrl+shift+p】,选择C/C++:Edit Configurations(JSON)
    在这里插入图片描述
    VSCode在.vscode目录下生成c_cpp_properties.json,在这里配置头文件的路径。将其中的includePath的值改为${workspaceFolder}/include
    在这里插入图片描述
  3. .vscode下建立tasks.json, 内容如下,其会在debug之前调用build.sh进行构建。
    {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "build", 
                "type": "shell", 
                "command": "sh build.sh",
            }
        ]
    } 
    
  4. .vscode下建立launch.json文件,内容如下:
    {
        "version": "0.2.0",
        "configurations": [
            {
                "name": "leveldb",
                "type": "cppdbg",
                "request": "launch",
                "program": "${workspaceFolder}/test/ldbtest",
                "stopAtEntry": true,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": false,
                "MIMode": "gdb",
                "preLaunchTask": "build",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    },
                    {
                        "description":  "Set Disassembly Flavor to Intel",
                        "text": "-gdb-set disassembly-flavor intel",
                        "ignoreFailures": true
                    }
              ]
            }
        ]
    }
    
    
  5. 在VSCode的Debug面板启动Debug,并设置断点
    在这里插入图片描述
  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值