欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 嵌套式项目中Vscode中调试Rust的一些问题解决

嵌套式项目中Vscode中调试Rust的一些问题解决

2025/2/22 2:10:18 来源:https://blog.csdn.net/SteveForever/article/details/140906203  浏览:    关键词:嵌套式项目中Vscode中调试Rust的一些问题解决

嵌套式项目指定Rust目录

由于是嵌套式项目,比如C++代码中对Rust进行了Bind,Rust目录就在项目子目录中,为了让vscode中安装的rust-analyzer识别到正确的rust项目目录,在.vscode/settings.json中添加如下

    "rust-analyzer.linkedProjects": ["xxx/yyy/Cargo.toml" ]

Vscode debug Rust

比如rust项目中有个test程序,test_demo。在vscode中,需要安装LLDB的插件,可以生成launch.json文件,以及选择LLDB的选项生成不同Rust调试配置,比如cargo test, cargo build, attach, launch等。
配置项如下:

{"version": "0.2.0","configurations": [{"type": "lldb","request": "launch","name": "Debug executable 'hello_world'","cargo": {"args": ["test","-p","gpt4-rs","--test","test_create_model","--no-run","--manifest-path=${workspaceFolder}/xxx/rust/Cargo.toml"]// "filter": {//     "name": "hello_world",//     "kind": "bin"// }},"program": "${cargo:program}","args": [],"cwd": "${workspaceFolder}/gpt4all-bindings/rust","env": {"LD_LIBRARY_PATH": "/home/ken/Codes/xxx/build:/home/ken/Codes/yyy/build"}}]
}

包括了如下细节:
(1)设置环境变量env;
(2)–manifest-path=${workspaceFolder}/xxx/Cargo.toml设置rust项目位置,不然识别不了;
(3)设置test目标名称:test_demo,设置rust package name:gpt4-rs。

rust binding调试c++ so

如果要为c++或者c代码绑定rust code,c++编译生成动态链接库。这时要调试so,选择上面的launch方式,cargo run 或者 cargo test运行rust代码。
然后将so编译成为debug模式,在vscode的c++代码中打上断点,启动程序调试。直接就会断点到so内部对应的代码行。

两个要点:

  • 编译动态链接库debug版本
  • 按照上一节配置rust vscode调试启动程序

cmake项目编译debug so:

cmake -B build -S . -DCMAKE_BUILD_TYPE=DEBUG
cmake --build build

attach是用于已经启动了一个持续运行的程序(比如启动了一个server)(如果程序一下子就结束了,这种方式使用launch调试),这个程序加载了so,然后调试so就选择attach(中文直译就是依附到这个程序上,翻译有点傻)。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词