# [−] [src] Crate panic_semihosting

Report panic messages to the host stderr using semihosting

This crate contains an implementation of `panic_fmt` that logs panic messages to the host stderr using `cortex-m-semihosting`. Before logging the message the panic handler disables (masks) the device specific interrupts. After logging the message the panic handler trigger a breakpoint and then goes into an infinite loop.

Currently, this crate only supports the ARM Cortex-M architecture.

# Usage

ⓘThis example is not tested

    #![no_std]

    extern crate panic_semihosting;

    fn main() {
        panic!("FOO")
    }

    (gdb) monitor arm semihosting enable
    (gdb) continue
    Program received signal SIGTRAP, Trace/breakpoint trap.
    rust_begin_unwind (args=..., file=..., line=8, col=5)
        at $CRATE/src/lib.rs:69
    69          asm::bkpt();

    $ openocd -f (..)
    (..)
    panicked at 'FOO', src/main.rs:6:5

# Optional features

## `inline-asm`

When this feature is enabled semihosting is implemented using inline assembly (`asm!`) and compiling this crate requires nightly.

When this feature is disabled semihosting is implemented using FFI calls into an external assembly file and compiling this crate works on stable and beta.

# Help

## Keyboard Shortcuts

`?`
  Show this help dialog
`S`
  Focus the search field
`↑`
  Move up in search results
`↓`
  Move down in search results
`↹`
  Switch tab
`⏎`
  Go to active search result
`+`
  Expand all sections
`-`
  Collapse all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)

Search multiple things at once by splitting your query with comma (e.g. `str,u8` or `String,struct:Vec,test`)