查看端口
使用 lsof 可用于端口占用。主要有两种用法:
查看占用端口的进程
lsof -i :port
查看进程打开的文件
lsof -p pid
条件断点
以 slice 为例。假设断点为: buffer.len() == 220 ,则实际填充条件为 buffer.1 == 220 。在 vscode 中使用是,需要传递 native 表达式:
/nav buffer.1 == 240内存问题
在 Rust 除非使用了 unsafe 语句,否则所有的行为都是定义的(如果 safe 情况下出现了未定义行为,则为编译器 bug)。
如果程序表现出了内存践踏的情况,则可检查:
是否使用强制类型转换时出现了数值溢出
是否使用了 unsafe 语句
如果是第二种情况,则可以使用以下方法进行检查:
ASan
asan 的作用主要是检查:
使用了未分配的内存
使用了未初始化的内存
使用了已经释放的内存
指针越界
内存泄露
条件竞争
在 Rust 中启用 ASan
RUSTFLAGS=-Zsanitizer=address cargo test --target aarch64-apple-darwin
监控内存
监控内存使用的命令为 WatchPoint。有两种方法:
w s e addr 用来监视地址 addr
w s v var 用来监视变量 var
| 与 C++ 类似。Rust 中的 const 变量无法以任意形式绕过(运行时保证)。 |