1 个不稳定版本
0.1.0 | 2022年6月3日 |
---|
#1039 在 硬件支持
107 每月下载量
7KB
sgx-panic-backtrace
一个用于在SGX enclave内部打印出恐慌和堆栈跟踪的小型库。
原因
- 在我们等待
backtrace-rs
被修复的同时,让堆栈跟踪工作起来 :)
使用方法
将 sgx-panic-backtrace
添加到你的 Cargo.toml
[dependencies]
sgx-panic-backtrace = "0.1.0"
在enclave中,在你的主函数中调用 sgx_panic_backtrace::set_panic_hook()
sgx_panic_backtrace::set_panic_hook();
如果enclave发生恐慌(且panic=abort未开启!)它现在将打印出原始堆栈跟踪帧到stdout。这些包括只有帧索引和相对帧指令指针偏移量,你需要在外部enclave中进行符号化。
$ cargo run --target=x86_64-fortanix-unknown-sgx
enclave: panicked at 'foo', bar.rs:10:5
stack backtrace:
0: 0x1b09d9
1: 0x1396f6
2: 0x10f4cc
3: 0x48b3ef
4: 0x2d540b
5: 0x2d56fa
6: 0x2d531d
7: 0x16c681
8: 0x116fd0
9: 0x13410e
要从这些原始IP获取可读的符号名称和位置,你可能希望使用Fortanix EDP附带的一个名为 stack-trace-resolve
的实用程序。
例如
$ ftxsgx-runner <my-enclave-bin>.sgxs | stack-trace-resolve <my-enclave-bin>
依赖项
~2.4–3.5MB
~72K SLoC