diff --git a/src/libraries/utils/pretty_utils.ml b/src/libraries/utils/pretty_utils.ml
index b45091105571b31ea853dfe1f5891833b170f64d..cf7bc17c9d7773d63734f5192b56d729732b44e7 100644
--- a/src/libraries/utils/pretty_utils.ml
+++ b/src/libraries/utils/pretty_utils.ml
@@ -132,6 +132,10 @@ let pp_pair
 
 let escape_underscores = Str.global_replace (Str.regexp_string "_") "__"
 
+let pp_escaped pp fmt e =
+  let s = Format.asprintf "%a" pp e in
+  Format.fprintf fmt "%s" (String.escaped s)
+
 let pp_flowlist ?(left=format_of_string "(") ?(sep=format_of_string ",") ?(right=format_of_string ")") f out =
   function
   | [] -> Format.fprintf out "%(%)%(%)" left right
diff --git a/src/libraries/utils/pretty_utils.mli b/src/libraries/utils/pretty_utils.mli
index 4e3622182141bd02cd96d4416fd0b9ac6ed27fcf..12c9d35b3ecbb3add9430a38500183076c27b0c4 100644
--- a/src/libraries/utils/pretty_utils.mli
+++ b/src/libraries/utils/pretty_utils.mli
@@ -143,6 +143,10 @@ val pp_trail : 'a formatter -> 'a formatter
 (** pretty-prints its contents inside an '(** ... **)' horizontal block trailed
     with '*' *)
 
+val pp_escaped: 'a formatter -> 'a formatter
+(** [pp_escaped pp e] pretty-prints [e] with [String.escaped].
+    @since Frama-C+dev *)
+
 (* ********************************************************************** *)
 (** {2 Description Lists (margins)} *)
 (* ********************************************************************** *)