基本思路
- 远程主机成功编译leveldb
- 由于levedb是一个库,需写一个测试程序调用它
- 远程调试这个测试程序
具体步骤
1. 本地环境准备
本地需可以进行远程C/C++调试,环境搭建参见Windows + VSCode SSH实现远程C/C++开发
2. 远程主机准备
-
远程主机需准备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 .
-
编写测试程序
在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; }
-
编写编译脚本。在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准备
- 配置远程debug之后,打开远程主机的leveldb目录
- 设置C/C++配置文件。打开命令面板【ctrl+shift+p】,选择C/C++:Edit Configurations(JSON)
VSCode在.vscode目录下生成c_cpp_properties.json,在这里配置头文件的路径。将其中的includePath的值改为${workspaceFolder}/include
- .vscode下建立tasks.json, 内容如下,其会在debug之前调用build.sh进行构建。
{ "version": "2.0.0", "tasks": [ { "label": "build", "type": "shell", "command": "sh build.sh", } ] }
- .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 } ] } ] }
- 在VSCode的Debug面板启动Debug,并设置断点