mirror of
https://github.com/QuasarApp/backward-cpp.git
synced 2025-05-06 23:09:33 +00:00
Updated README about exception support
This commit is contained in:
parent
ed70de5e9e
commit
a69e228791
28
README.md
28
README.md
@ -11,26 +11,40 @@ Backward will spice it up for you:
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
There is not much to say. Of course it will be able to display the code
|
Of course it will be able to display the code snippets only if the source files
|
||||||
snippets only if the source files are accessible (else see trace #4 in the
|
are accessible (else see trace #4 in the example).
|
||||||
example).
|
|
||||||
|
|
||||||
All "Source" lines and code snippet prefixed by a pipe "|" are frames inline
|
All "Source" lines and code snippet prefixed by a pipe "|" are frames inlined
|
||||||
the next frame.
|
in the next one.
|
||||||
You can see that for the trace #1 in the example, the function
|
You can see that for the trace #1 in the example, the function
|
||||||
`you_shall_not_pass()` was inlined in the function `...read2::do_test()` by the
|
`you_shall_not_pass()` was inlined in the function `...read2::do_test()` by the
|
||||||
compiler.
|
compiler.
|
||||||
|
|
||||||
|
### Uncaught exception
|
||||||
|
|
||||||
|
You know
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
Among other things, Backward can also set a custom std::terminate handler,
|
||||||
|
which brings you pretty printed stacktrace on uncaught exceptions.
|
||||||
|
|
||||||
|
And if you go the extra mile and use backward::raise(), you get the stack-trace
|
||||||
|
of the original exception, no matter how many times the exception was caught
|
||||||
|
and re-thrown:
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
##Installation
|
##Installation
|
||||||
|
|
||||||
#### Install backward.hpp
|
### Install backward.hpp
|
||||||
|
|
||||||
Backward is a header only library. So installing Backward is easy, simply drop
|
Backward is a header only library. So installing Backward is easy, simply drop
|
||||||
a copy of `backward.hpp` along with your other source files in your C++ project.
|
a copy of `backward.hpp` along with your other source files in your C++ project.
|
||||||
You can also use a git submodule or really any other way that best fits your
|
You can also use a git submodule or really any other way that best fits your
|
||||||
environment, as long as you can include `backward.hpp`.
|
environment, as long as you can include `backward.hpp`.
|
||||||
|
|
||||||
#### Install backward.cpp
|
### Install backward.cpp
|
||||||
|
|
||||||
If you want Backward to automatically print a stack trace on most common fatal
|
If you want Backward to automatically print a stack trace on most common fatal
|
||||||
errors (segfault, abort, un-handled exception...), simply add a copy of
|
errors (segfault, abort, un-handled exception...), simply add a copy of
|
||||||
|
15
doc/Makefile
Normal file
15
doc/Makefile
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
|
||||||
|
mdfiles:=\
|
||||||
|
../README.md
|
||||||
|
|
||||||
|
htmlfiles:=$(mdfiles:.md=.html)
|
||||||
|
|
||||||
|
all: $(htmlfiles)
|
||||||
|
|
||||||
|
$(mdfiles:.md=.html): $(mdfiles)
|
||||||
|
|
||||||
|
%.html: %.md _head.html _foot.html
|
||||||
|
redcarpet --parse-fenced_code_blocks $< > $@.body && cat _head.html $@.body _foot.html > $@
|
||||||
|
|
||||||
|
serve:
|
||||||
|
cd .. && python -m SimpleHTTPServer
|
2
doc/_foot.html
Normal file
2
doc/_foot.html
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
</body>
|
||||||
|
</html>
|
31
doc/_head.html
Normal file
31
doc/_head.html
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
|
||||||
|
<!-- <link href="http://kevinburke.bitbucket.org/markdowncss/markdown.css" rel="stylesheet"></link>-->
|
||||||
|
<link href="doc/github.css" rel="stylesheet"></link>
|
||||||
|
<script>
|
||||||
|
function refresh() {
|
||||||
|
$.get(document.location.href, null, function(data) {
|
||||||
|
var new_page = $(data.replace(/(<[ \t]*)(html|head|body)/ig, '$1$2a'));
|
||||||
|
var new_bodya = new_page.find('bodya');
|
||||||
|
var cur_body = $("body");
|
||||||
|
var cur_bodya = cur_body.find("bodya");
|
||||||
|
if (!cur_bodya[0]) {
|
||||||
|
cur_bodya = cur_body;
|
||||||
|
}
|
||||||
|
if (new_bodya.text() == cur_bodya.text()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var now = Date();
|
||||||
|
console.log('updating body ', now);
|
||||||
|
cur_body.html(new_bodya);
|
||||||
|
$("body").prepend(now);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
$().ready(function() {
|
||||||
|
refresh();
|
||||||
|
setInterval(refresh, 1000);
|
||||||
|
});
|
||||||
|
</script>
|
||||||
|
</head>
|
||||||
|
<body>
|
BIN
doc/exception_st_pretty.png
Normal file
BIN
doc/exception_st_pretty.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 122 KiB |
BIN
doc/exception_st_rude.png
Normal file
BIN
doc/exception_st_rude.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 6.7 KiB |
277
doc/github.css
Normal file
277
doc/github.css
Normal file
@ -0,0 +1,277 @@
|
|||||||
|
body {
|
||||||
|
font-family: Helvetica, arial, sans-serif;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.6;
|
||||||
|
padding-top: 10px;
|
||||||
|
padding-bottom: 10px;
|
||||||
|
background-color: white;
|
||||||
|
padding: 30px; }
|
||||||
|
|
||||||
|
body > *:first-child {
|
||||||
|
margin-top: 0 !important; }
|
||||||
|
body > *:last-child {
|
||||||
|
margin-bottom: 0 !important; }
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: #4183C4; }
|
||||||
|
a.absent {
|
||||||
|
color: #cc0000; }
|
||||||
|
a.anchor {
|
||||||
|
display: block;
|
||||||
|
padding-left: 30px;
|
||||||
|
margin-left: -30px;
|
||||||
|
cursor: pointer;
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: 0;
|
||||||
|
bottom: 0; }
|
||||||
|
|
||||||
|
h1, h2, h3, h4, h5, h6 {
|
||||||
|
margin: 20px 0 10px;
|
||||||
|
padding: 0;
|
||||||
|
font-weight: bold;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
cursor: text;
|
||||||
|
position: relative; }
|
||||||
|
|
||||||
|
h1:hover a.anchor, h2:hover a.anchor, h3:hover a.anchor, h4:hover a.anchor, h5:hover a.anchor, h6:hover a.anchor {
|
||||||
|
background: url("../../images/modules/styleguide/para.png") no-repeat 10px center;
|
||||||
|
text-decoration: none; }
|
||||||
|
|
||||||
|
h1 tt, h1 code {
|
||||||
|
font-size: inherit; }
|
||||||
|
|
||||||
|
h2 tt, h2 code {
|
||||||
|
font-size: inherit; }
|
||||||
|
|
||||||
|
h3 tt, h3 code {
|
||||||
|
font-size: inherit; }
|
||||||
|
|
||||||
|
h4 tt, h4 code {
|
||||||
|
font-size: inherit; }
|
||||||
|
|
||||||
|
h5 tt, h5 code {
|
||||||
|
font-size: inherit; }
|
||||||
|
|
||||||
|
h6 tt, h6 code {
|
||||||
|
font-size: inherit; }
|
||||||
|
|
||||||
|
h1 {
|
||||||
|
font-size: 28px;
|
||||||
|
color: black; }
|
||||||
|
|
||||||
|
h2 {
|
||||||
|
font-size: 24px;
|
||||||
|
border-bottom: 1px solid #cccccc;
|
||||||
|
color: black; }
|
||||||
|
|
||||||
|
h3 {
|
||||||
|
font-size: 18px; }
|
||||||
|
|
||||||
|
h4 {
|
||||||
|
font-size: 16px; }
|
||||||
|
|
||||||
|
h5 {
|
||||||
|
font-size: 14px; }
|
||||||
|
|
||||||
|
h6 {
|
||||||
|
color: #777777;
|
||||||
|
font-size: 14px; }
|
||||||
|
|
||||||
|
p, blockquote, ul, ol, dl, li, table, pre {
|
||||||
|
margin: 15px 0; }
|
||||||
|
|
||||||
|
hr {
|
||||||
|
background: transparent url("../../images/modules/pulls/dirty-shade.png") repeat-x 0 0;
|
||||||
|
border: 0 none;
|
||||||
|
color: #cccccc;
|
||||||
|
height: 4px;
|
||||||
|
padding: 0; }
|
||||||
|
|
||||||
|
body > h2:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
padding-top: 0; }
|
||||||
|
body > h1:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
padding-top: 0; }
|
||||||
|
body > h1:first-child + h2 {
|
||||||
|
margin-top: 0;
|
||||||
|
padding-top: 0; }
|
||||||
|
body > h3:first-child, body > h4:first-child, body > h5:first-child, body > h6:first-child {
|
||||||
|
margin-top: 0;
|
||||||
|
padding-top: 0; }
|
||||||
|
|
||||||
|
a:first-child h1, a:first-child h2, a:first-child h3, a:first-child h4, a:first-child h5, a:first-child h6 {
|
||||||
|
margin-top: 0;
|
||||||
|
padding-top: 0; }
|
||||||
|
|
||||||
|
h1 p, h2 p, h3 p, h4 p, h5 p, h6 p {
|
||||||
|
margin-top: 0; }
|
||||||
|
|
||||||
|
li p.first {
|
||||||
|
display: inline-block; }
|
||||||
|
|
||||||
|
ul, ol {
|
||||||
|
padding-left: 30px; }
|
||||||
|
|
||||||
|
ul :first-child, ol :first-child {
|
||||||
|
margin-top: 0; }
|
||||||
|
|
||||||
|
ul :last-child, ol :last-child {
|
||||||
|
margin-bottom: 0; }
|
||||||
|
|
||||||
|
dl {
|
||||||
|
padding: 0; }
|
||||||
|
dl dt {
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: bold;
|
||||||
|
font-style: italic;
|
||||||
|
padding: 0;
|
||||||
|
margin: 15px 0 5px; }
|
||||||
|
dl dt:first-child {
|
||||||
|
padding: 0; }
|
||||||
|
dl dt > :first-child {
|
||||||
|
margin-top: 0; }
|
||||||
|
dl dt > :last-child {
|
||||||
|
margin-bottom: 0; }
|
||||||
|
dl dd {
|
||||||
|
margin: 0 0 15px;
|
||||||
|
padding: 0 15px; }
|
||||||
|
dl dd > :first-child {
|
||||||
|
margin-top: 0; }
|
||||||
|
dl dd > :last-child {
|
||||||
|
margin-bottom: 0; }
|
||||||
|
|
||||||
|
blockquote {
|
||||||
|
border-left: 4px solid #dddddd;
|
||||||
|
padding: 0 15px;
|
||||||
|
color: #777777; }
|
||||||
|
blockquote > :first-child {
|
||||||
|
margin-top: 0; }
|
||||||
|
blockquote > :last-child {
|
||||||
|
margin-bottom: 0; }
|
||||||
|
|
||||||
|
table {
|
||||||
|
padding: 0; }
|
||||||
|
table tr {
|
||||||
|
border-top: 1px solid #cccccc;
|
||||||
|
background-color: white;
|
||||||
|
margin: 0;
|
||||||
|
padding: 0; }
|
||||||
|
table tr:nth-child(2n) {
|
||||||
|
background-color: #f8f8f8; }
|
||||||
|
table tr th {
|
||||||
|
font-weight: bold;
|
||||||
|
border: 1px solid #cccccc;
|
||||||
|
text-align: left;
|
||||||
|
margin: 0;
|
||||||
|
padding: 6px 13px; }
|
||||||
|
table tr td {
|
||||||
|
border: 1px solid #cccccc;
|
||||||
|
text-align: left;
|
||||||
|
margin: 0;
|
||||||
|
padding: 6px 13px; }
|
||||||
|
table tr th :first-child, table tr td :first-child {
|
||||||
|
margin-top: 0; }
|
||||||
|
table tr th :last-child, table tr td :last-child {
|
||||||
|
margin-bottom: 0; }
|
||||||
|
|
||||||
|
img {
|
||||||
|
max-width: 100%; }
|
||||||
|
|
||||||
|
span.frame {
|
||||||
|
display: block;
|
||||||
|
overflow: hidden; }
|
||||||
|
span.frame > span {
|
||||||
|
border: 1px solid #dddddd;
|
||||||
|
display: block;
|
||||||
|
float: left;
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 13px 0 0;
|
||||||
|
padding: 7px;
|
||||||
|
width: auto; }
|
||||||
|
span.frame span img {
|
||||||
|
display: block;
|
||||||
|
float: left; }
|
||||||
|
span.frame span span {
|
||||||
|
clear: both;
|
||||||
|
color: #333333;
|
||||||
|
display: block;
|
||||||
|
padding: 5px 0 0; }
|
||||||
|
span.align-center {
|
||||||
|
display: block;
|
||||||
|
overflow: hidden;
|
||||||
|
clear: both; }
|
||||||
|
span.align-center > span {
|
||||||
|
display: block;
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 13px auto 0;
|
||||||
|
text-align: center; }
|
||||||
|
span.align-center span img {
|
||||||
|
margin: 0 auto;
|
||||||
|
text-align: center; }
|
||||||
|
span.align-right {
|
||||||
|
display: block;
|
||||||
|
overflow: hidden;
|
||||||
|
clear: both; }
|
||||||
|
span.align-right > span {
|
||||||
|
display: block;
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 13px 0 0;
|
||||||
|
text-align: right; }
|
||||||
|
span.align-right span img {
|
||||||
|
margin: 0;
|
||||||
|
text-align: right; }
|
||||||
|
span.float-left {
|
||||||
|
display: block;
|
||||||
|
margin-right: 13px;
|
||||||
|
overflow: hidden;
|
||||||
|
float: left; }
|
||||||
|
span.float-left span {
|
||||||
|
margin: 13px 0 0; }
|
||||||
|
span.float-right {
|
||||||
|
display: block;
|
||||||
|
margin-left: 13px;
|
||||||
|
overflow: hidden;
|
||||||
|
float: right; }
|
||||||
|
span.float-right > span {
|
||||||
|
display: block;
|
||||||
|
overflow: hidden;
|
||||||
|
margin: 13px auto 0;
|
||||||
|
text-align: right; }
|
||||||
|
|
||||||
|
code, tt {
|
||||||
|
margin: 0 2px;
|
||||||
|
padding: 0 5px;
|
||||||
|
white-space: nowrap;
|
||||||
|
border: 1px solid #eaeaea;
|
||||||
|
background-color: #f8f8f8;
|
||||||
|
border-radius: 3px; }
|
||||||
|
|
||||||
|
pre code {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
white-space: pre;
|
||||||
|
border: none;
|
||||||
|
background: transparent; }
|
||||||
|
|
||||||
|
.highlight pre {
|
||||||
|
background-color: #f8f8f8;
|
||||||
|
border: 1px solid #cccccc;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 19px;
|
||||||
|
overflow: auto;
|
||||||
|
padding: 6px 10px;
|
||||||
|
border-radius: 3px; }
|
||||||
|
|
||||||
|
pre {
|
||||||
|
background-color: #f8f8f8;
|
||||||
|
border: 1px solid #cccccc;
|
||||||
|
font-size: 13px;
|
||||||
|
line-height: 19px;
|
||||||
|
overflow: auto;
|
||||||
|
padding: 6px 10px;
|
||||||
|
border-radius: 3px; }
|
||||||
|
pre code, pre tt {
|
||||||
|
background-color: transparent;
|
||||||
|
border: none; }
|
Loading…
x
Reference in New Issue
Block a user