This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Extend tsave: save start time, stop time, user and notes


On 10/03/2012 10:09 PM, Dmitry Kozlov wrote:

In general, I think it is useful to include these attributes in tracefile saved by command 'tsave'.

2012-10-03 Dmitry Kozlov<ddk@mentor.com>

* tracepoint.c (trace_save): Add saving starttime, stoptime, user and notes.

diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 0f94150..f7e96eb 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -3036,6 +3036,24 @@ trace_save (const char *filename, int target_does_save)
      fprintf (fp, ";disconn:%x", ts->disconnected_tracing);
    if (ts->circular_buffer)
      fprintf (fp, ";circular:%x", ts->circular_buffer);
+  if (ts->start_time)
+    fprintf (fp, ";starttime:%ld%06ld", (long int) (ts->start_time / 1000000), (long int) (ts->start_time % 1000000));

This line is too long...


+  if (ts->stop_time)
+    fprintf (fp, ";stoptime:%ld%06ld", (long int) (ts->stop_time / 1000000), (long int) (ts->stop_time % 1000000));

and this line.


+ if (ts->notes)

ts->notes will never be NULL, because GDBserver will always send "notes:" in qTStatus packet (See gdbserver/tracepoint.c:cmd_qtstatus), but other stubs may don't include "notes:" in qTStatus packet, so we may do the check here like this,


if (ts->notes && ts->notes[0] != 0)

+  {
+    char *buf = (char *) alloca (strlen (ts->notes) * 2 + 1);

We need a blank line here. Looks 'alloca' is not encouraged to use, and it should be replaced with xmalloc/xfree.


[PATCH] Replace potentially unsafe alloca with xmalloc/xfree in value_concat
http://sourceware.org/ml/gdb-patches/2012-09/msg00274.html


+    bin2hex ((gdb_byte *) ts->notes, buf, 0);
+    fprintf (fp, ";notes:%s", buf);
+
+  }
+  if (ts->user_name)
+  {
+    char *buf = (char *) alloca (strlen (ts->user_name) * 2 + 1);

Likewise.


+    bin2hex ((gdb_byte *) ts->user_name, buf, 0);
+    fprintf (fp, ";username:%s", buf);
+
+  }
    fprintf (fp, "\n");

/* Note that we want to upload tracepoints and save those, rather

Logically, this patch depends on your previous patch


  PATCH fix start-time and stop-time in trace-status
  http://sourceware.org/ml/gdb-patches/2012-09/msg00621.html

otherwise, we generate start-time and stop-time in trace file in decimal format, while gdb still interprets it as hex.
--
Yao



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]