mariadb/scripts/convert-debug-for-diff.sh
Monty bf9aa8687f Fixes to make dbug traces from Windows easier to compare with Unix traces
- Remove DBUG calls from my_winfile.c where call and parameters
  are already printed by mysys.
- Remove DBUG from my_get_osfhandle() and my_get_open_flags() to remove
  DBUG noise.
- Updated convert-debug-for-diff to take into account windows.
- Changed some DBUG_RETURN(function()) to tmp=function(); DBUG_RETURN(tmp);
  This is needed as Visual C++ prints for DBUG binaries a trace for
  func_a()
  {
    DBUG_ENTER("func_a");
    DBUG_RETURN(func_b())
  }
  as
  >func_a
  <func_a
  >func_b
  <func_b
instead of when using gcc:
  >func_a
  | >func_b
  | <func_b
  <func_a
2023-03-02 13:11:54 +02:00

45 lines
1.6 KiB
Bash
Executable file

#!/usr/bin/perl -i
#
# This script converts all numbers that look like addresses or memory sizes,
# in a debug files generated by --debug (like mysqld --debug-dbug), to #.
# The script also deletes all thread id's from the start of the line.
# This allows you to easily compare the files (for example with diff)
# to find out what changes between different executions.
# This is extremely useful for comparing two mysqld versions to see
# why things now work differently.
# The script converts the files in place.
#
# Typical usage:
#
# convert-debug-for-diff /tmp/mysqld.trace /tmp/mysqld-old.trace
# diff /tmp/mysqld.trace /tmp/mysqld-old.trace
while (<>)
{
s/^T@[0-9]+ *://g;
s/0x[0-9a-f]+(\s|\n|\)|=|,|;)/#$1/g;
s/bitmap: [0-9a-fA-F]+$/bitmap: #/g;
s/size: [0-9-]+/size: #/g;
s/memory_used: [0-9]+/memory_used: #/g;
s/memory_used: -[0-9]+/memory_used: #/g;
s/Total alloc: [0-9]+/Total alloc: #/g;
s/(proc_info: )(.*:)[\d]+ /$1 /;
s/(select_cond.*) at line.*/$1/;
s/\(id: \d+ -> \d+\)/id: #->#/g;
s/(exit: found key at )\d+/$1#/g;
s/enter_stage: (.* at).*/enter_stage $1 ../g;
s/crc: [0-9]+/crc: #/g;
s/ref_count: [0-9]+/ref_count: #/g;
s/block: # \(\d+\)/block: # (#)/g;
s/delete_mutex: # mutex: # \(id: \d+ \<\- \d+\)/delete_mutex: # mutex: # (id: # <- #)/g;
s/ShortTrID: [0-9]+/ShortTrID: #/g;
s/timestamp:[0-9]+/timestamp:#/g;
s/#sql_.*_(\d+)/#sql_xxx_$1/g;
s/fd: [0-9]+/fd: #/g;
s/query_id: (\d+)/query_id: #/g;
s|: .*/mysql-test/var/tmp/mysqld\.\d|: var/tmp/mysqld|g;
s|: .*\\mysql-test\\var\\tmp\\mysqld\.\d|: var/tmp/mysqld|g;
print $_;
}