]> git.donarmstrong.com Git - lilypond.git/blob - lily/debug.cc
67bcd7068123eda280eef65618c368d2e6e13262
[lilypond.git] / lily / debug.cc
1 #include <fstream.h>
2 #include <signal.h>
3 #include <std/new.h>
4 #include <stdlib.h>
5 #include "debug.hh"
6 #include "dstream.hh"
7 #include "flower-debug.hh"
8
9 Dstream *monitor=0;
10 ostream * nulldev =0;
11 // ugh
12 struct _Dinit {
13     _Dinit() {
14         nulldev = new ofstream("/dev/null");
15         monitor = new Dstream(&cout,".dstreamrc");
16     }
17     ~_Dinit() {
18         delete nulldev;
19         delete monitor;
20     }
21 } dinit;
22
23
24
25 /*
26   want to do a stacktrace .
27   */
28 void
29 mynewhandler()
30 {
31     assert(false);
32 }
33
34 void
35 float_handler(int)
36 {
37     cerr << "Floating point exception .. \n"<< flush;
38     assert(false);
39 }
40
41 void
42 debug_init()
43 {
44 #ifndef NDEBUG
45     set_new_handler(&mynewhandler);
46 #endif
47     set_flower_debug(*monitor, check_debug);
48     
49     signal(SIGFPE, float_handler);
50 }   
51
52 bool check_debug=false;
53
54 void
55 set_debug(bool b)
56 {
57     check_debug =b;
58 }
59
60