diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2014-02-05 15:19:40 -0800 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2014-03-13 00:24:20 -0700 |
| commit | 829df69f9f7a0dd0adbf072a47fd7c7600e75211 (patch) | |
| tree | 74d6759c446dadbd121d2ae9470a9b173045be0e /src/rustllvm/ExecutionEngineWrapper.cpp | |
| parent | 9a21b9007775343b7ca59245380b38d5b41a2e2b (diff) | |
| download | rust-829df69f9f7a0dd0adbf072a47fd7c7600e75211.tar.gz rust-829df69f9f7a0dd0adbf072a47fd7c7600e75211.zip | |
Add basic backtrace functionality
Whenever a failure happens, if a program is run with `RUST_LOG=std::rt::backtrace` a backtrace will be printed to the task's stderr handle. Stack traces are uncondtionally printed on double-failure and rtabort!(). This ended up having a nontrivial implementation, and here's some highlights of it: * We're bundling libbacktrace for everything but OSX and Windows * We use libgcc_s and its libunwind apis to get a backtrace of instruction pointers * On OSX we use dladdr() to go from an instruction pointer to a symbol * On unix that isn't OSX, we use libbacktrace to get symbols * Windows, as usual, has an entirely separate implementation Lots more fun details and comments can be found in the source itself. Closes #10128
Diffstat (limited to 'src/rustllvm/ExecutionEngineWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
