Add debugging to dmesg code.
[virt-dmesg.git] / src / main.ml
index 5022a71..25b686b 100644 (file)
@@ -164,16 +164,20 @@ See virt-dmesg(1) man page for more suggestions." guest_name;
           *)
          let log_buf = StringMap.find "log_buf" symbols in
          let log_buf = Kernel.follow_pointer k log_buf in
+         debug "log_buf = %Ld" log_buf;
          let log_buf_len = StringMap.find "log_buf_len" symbols in
          let log_buf_len = Kernel.get_int32 k log_buf_len in
+         debug "log_buf_len = %Ld" log_buf_len;
          (*    let log_start = StringMap.find "log_start" symbols in
                let log_start = Kernel.get_int64 k log_start in *)
          let log_end = StringMap.find "log_end" symbols in
          let log_end = Kernel.get_int64 k log_end in
+         debug "log_end = %Ld" log_end;
          (*    let con_start = StringMap.find "con_start" symbols in
                let con_start = Kernel.get_int64 k con_start in *)
          let logged_chars = StringMap.find "logged_chars" symbols in
          let logged_chars = Kernel.get_int64 k logged_chars in
+         debug "logged_chars = %Ld" logged_chars;
 
          (* This is basically the same algorithm from
           * printk.c:do_syslog type=3, translated into OCaml.  Unlike
@@ -203,6 +207,8 @@ See virt-dmesg(1) man page for more suggestions." guest_name;
        with
          Not_found ->
            error "could not find kernel log buffer in kernel image";
+           error "try: %s --dump-kernel %s | strings | less"
+             (get_program_name ()) guest_name;
            exit 1
       )
 
@@ -222,6 +228,8 @@ See virt-dmesg(1) man page for more suggestions." guest_name;
       match addr with
       | None ->
           error "init_uts_ns nor system_utsname symbols not found in this kernel";
+          error "try: %s --dump-kernel %s | strings | less"
+             (get_program_name ()) guest_name;
           exit 1
 
       | Some addr ->
@@ -241,6 +249,8 @@ See virt-dmesg(1) man page for more suggestions." guest_name;
           (* Sanity check. *)
           if system <> "Linux" then (
             error "utsname symbols found in kernel, but points to unknown structure";
+            error "try: %s --dump-kernel %s | strings | less"
+             (get_program_name ()) guest_name;
             exit 1
           );