This repository was archived by the owner on Dec 2, 2020. It is now read-only.
File tree Expand file tree Collapse file tree 7 files changed +66
-2
lines changed Expand file tree Collapse file tree 7 files changed +66
-2
lines changed Original file line number Diff line number Diff line change @@ -22,6 +22,10 @@ matrix:
22
22
rust : stable
23
23
if : (branch = staging OR branch = trying) OR (type = pull_request AND branch = master)
24
24
25
+ - env : TARGET=thumbv8m.main-none-eabi
26
+ rust : stable
27
+ if : (branch = staging OR branch = trying) OR (type = pull_request AND branch = master)
28
+
25
29
- env : TARGET=x86_64-unknown-linux-gnu
26
30
rust : nightly
27
31
if : (branch = staging OR branch = trying) OR (type = pull_request AND branch = master)
Original file line number Diff line number Diff line change @@ -5,6 +5,9 @@ This project adheres to [Semantic Versioning](http://semver.org/).
5
5
6
6
## [ Unreleased]
7
7
8
+ - Adds a feature to work around JLink quirks
9
+ - Adds a dbg! macro using heprintln
10
+
8
11
## [ v0.3.4] - 2019-04-22
9
12
10
13
### Fixed
Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ name = "cortex-m-semihosting"
11
11
readme = " README.md"
12
12
repository = " https://github.com/rust-embedded/cortex-m-semihosting"
13
13
version = " 0.3.4"
14
+ edition = " 2018"
14
15
15
16
[features ]
16
17
inline-asm = []
Original file line number Diff line number Diff line change @@ -4,7 +4,7 @@ use core::fmt::{self, Write};
4
4
5
5
use cortex_m:: interrupt;
6
6
7
- use hio:: { self , HStderr , HStdout } ;
7
+ use crate :: hio:: { self , HStderr , HStdout } ;
8
8
9
9
static mut HSTDOUT : Option < HStdout > = None ;
10
10
Original file line number Diff line number Diff line change 1
1
//! Host I/O
2
2
3
3
use core:: { fmt, slice} ;
4
- use nr;
4
+ use crate :: nr;
5
5
6
6
/// Host's standard error
7
7
pub struct HStderr {
Original file line number Diff line number Diff line change 123
123
//! ```
124
124
//! Output and monitoring proceed as in the above example.
125
125
//!
126
+ //! ## The `dbg!` macro
127
+ //!
128
+ //! Analogous to [`std::dbg`](https://doc.rust-lang.org/std/macro.dbg.html) the macro
129
+ //! `dbg!` returns a given expression and prints it using `heprintln!` including context
130
+ //! for quick and dirty debugging.
131
+ //!
132
+ //! Example:
133
+ //!
134
+ //! ```
135
+ //! const UUID: *mut u32 = 0x0009_FC70 as *mut u32;
136
+ //! dbg!(UUID);
137
+ //! let mut uuid: [u32; 4] = [0; 4];
138
+ //! for i in 0..4 {
139
+ //! dbg!(i);
140
+ //! uuid[i] = unsafe { dbg!(UUID.offset(i as isize).read_volatile()) }; }
141
+ //! }
142
+ //! ```
143
+ //! outputs
144
+ //! ```
145
+ //! [examples/semihosting.rs:37] UUID = 0x0009fc70
146
+ //! [examples/semihosting.rs:40] i = 0
147
+ //! [examples/semihosting.rs:41] UUID.offset(i as isize).read_volatile() = 3370045464
148
+ //! [examples/semihosting.rs:40] i = 1
149
+ //! [examples/semihosting.rs:41] UUID.offset(i as isize).read_volatile() = 1426218275
150
+ //! [examples/semihosting.rs:40] i = 2
151
+ //! [examples/semihosting.rs:41] UUID.offset(i as isize).read_volatile() = 2422621116
152
+ //! [examples/semihosting.rs:40] i = 3
153
+ //! [examples/semihosting.rs:41] UUID.offset(i as isize).read_volatile() = 1044138593
154
+ //! ```
155
+ //!
126
156
//! # Optional features
127
157
//!
128
158
//! ## `inline-asm`
Original file line number Diff line number Diff line change @@ -85,3 +85,29 @@ macro_rules! heprintln {
85
85
$crate:: export:: hstderr_fmt( format_args!( concat!( $s, "\n " ) , $( $tt) * ) )
86
86
} ;
87
87
}
88
+
89
+ /// Macro that prints and returns the value of a given expression
90
+ /// for quick and dirty debugging. Works exactly like `dbg!` in
91
+ /// the standard library, replacing `eprintln` with `heprintln`.
92
+ #[ macro_export]
93
+ macro_rules! dbg {
94
+ ( ) => {
95
+ $crate:: hprintln!( "[{}:{}]" , file!( ) , line!( ) ) ;
96
+ } ;
97
+ ( $val: expr) => {
98
+ // Use of `match` here is intentional because it affects the lifetimes
99
+ // of temporaries - https://stackoverflow.com/a/48732525/1063961
100
+ match $val {
101
+ tmp => {
102
+ $crate:: hprintln!( "[{}:{}] {} = {:#?}" ,
103
+ file!( ) , line!( ) , stringify!( $val) , & tmp) ;
104
+ tmp
105
+ }
106
+ }
107
+ } ;
108
+ // Trailing comma with single argument is ignored
109
+ ( $val: expr, ) => { $crate:: dbg!( $val) } ;
110
+ ( $( $val: expr) ,+ $( , ) ?) => {
111
+ ( $( $crate:: dbg!( $val) ) ,+, )
112
+ } ;
113
+ }
You can’t perform that action at this time.
0 commit comments