#sgx-enclave #backtrace #panics #printing

sgx-panic-backtrace

一个用于在SGX enclave内部打印出恐慌和堆栈跟踪的小型库

1 个不稳定版本

0.1.0 2022年6月3日

#1039硬件支持

Download history 1/week @ 2024-04-07 22/week @ 2024-04-21 44/week @ 2024-04-28 28/week @ 2024-05-05 15/week @ 2024-05-12 48/week @ 2024-05-19 7/week @ 2024-05-26 1/week @ 2024-06-02 13/week @ 2024-06-09 9/week @ 2024-06-16 5/week @ 2024-06-23 6/week @ 2024-06-30 92/week @ 2024-07-14 9/week @ 2024-07-21

107 每月下载量

MIT 许可证

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