- Rust Programming Cookbook
- Claus Matzinger
- 361字
- 2021-06-24 12:27:47
How to do it...
Execute the following steps for this recipe:
- Create a new binary project to debug: cargo new debug-me. Open this project in Visual Studio Code with the new extension loaded.
- Before anything can happen, Visual Studio Code needs a launch configuration to recognize Rust's LLVM output. First, let's create this launch configuration; for that, add a .vscode directory containing a launch.json file to the project directory. This can be autogenerated, so make sure that launch.json contains the following:
{
"version": "0.2.0",
"configurations": [
{
"type": "lldb",
"request": "launch",
"name": "Debug executable 'debug-me'",
"cargo": {
"args": [
"build",
"--bin=debug-me",
"--package=debug-me"
],
"filter": {
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
},
{
"type": "lldb",
"request": "launch",
"name": "Debug unit tests in executable 'debug-me'",
"cargo": {
"args": [
"test",
"--no-run",
"--bin=debug-me",
"--package=debug-me"
],
"filter": {
"kind": "bin"
}
},
"args": [],
"cwd": "${workspaceFolder}"
}
]
}
- Now, let's open src/main.rs and add some code to debug:
struct MyStruct {
prop: usize,
}
struct Point(f32, f32);
fn main() {
let a = 42;
let b = vec![0, 0, 0, 100];
let c = [1, 2, 3, 4, 5];
let d = 0x5ff;
let e = MyStruct { prop: 10 };
let p = Point(3.14, 3.14);
println!("Hello, world!");
}
- Save and add a breakpoint in VS Code's user interface. Click left of the line numbers and a red dot should appear there. This is a breakpoint:

- Having set a breakpoint, we expect the program to pause there and give us some insights into the current memory layout, that is, the state of any variables at that particular point in time. Run the debug launch configuration with F5 (or Debug | Start Debugging). The window configuration should change slightly and a panel on the left-hand side of the window shows local variables (among other things):

- Using the small control panel on top, you can then control the execution flow and watch the stack and memory on the left change accordingly. Note also the difference between an array and a (heap-allocated) vector!
Now, let's go behind the scenes to understand the code better.
推薦閱讀
- GAE編程指南
- TypeScript圖形渲染實戰:基于WebGL的3D架構與實現
- Mastering RStudio:Develop,Communicate,and Collaborate with R
- Mastering KnockoutJS
- OpenCV with Python Blueprints
- Hadoop大數據分析技術
- Mastering Adobe Captivate 7
- Android Game Programming by Example
- C語言程序設計教程
- Backbone.js Patterns and Best Practices
- 絕密原型檔案:看看專業產品經理的原型是什么樣
- Unity與C++網絡游戲開發實戰:基于VR、AI與分布式架構
- 中小企業網站建設與管理(靜態篇)
- Python輕松學:爬蟲、游戲與架站
- 企業級DevOps技術與工具實戰