forked from links-lang/links
-
Notifications
You must be signed in to change notification settings - Fork 0
/
debug.ml
36 lines (29 loc) · 1.27 KB
/
debug.ml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
(*** Debugging ***)
let debugging_enabled = Settings.add_bool ("debug", false, `User)
(** print a debug message if debugging is enabled *)
let print message =
(if Settings.get_value(debugging_enabled) then prerr_endline message; flush stderr)
(** print a debug message if debugging is enabled; [message] is a lazy expr. *)
let print_l message =
(if Settings.get_value(debugging_enabled) then
prerr_endline(Lazy.force message); flush stderr)
(** Print a formatted debugging message if debugging is enabled *)
let f fmt = Printf.kprintf print fmt
(** Print a debugging message if debugging is enabled and setting is on.
[message] is a thunk returning the string to print.
*)
let if_set setting message =
(if Settings.get_value(setting) then print (message ()))
(* Print [message] if debugging is enabled and setting is on;
[message] is a lazy expression *)
let if_set_l setting message =
(if Settings.get_value(setting) then print (Lazy.force message))
(* Print [message] with time taken by evaluating f *)
let debug_time msg f =
if Settings.get_value(debugging_enabled)
then
let start_time = Utility.time_milliseconds() in
let raw_result = f () in
print (msg ^" time: " ^ string_of_int (Utility.time_milliseconds() - start_time));
raw_result
else f ();;