/
niceSOFT
/
valgrind
Обзор
Документация
Войти
/
niceSOFT
/
valgrind
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
tests/filter_xml_frames
54 строки
1 KB
Florian Krohm
Tweak filter_xml_frames. Suppress frames containing neither a
18 сен 2013, 13:15
18 сен 2013, 13:15
b901609
Код
Авторство
О чём код?
#! /usr/bin/env perl # Remove certain <frame>.....</frame> records that are suspected to point # to some kind of system library. Those are # - frames with <obj>/lib/.... # - frames with <obj>/usr/lib/.... # - frames without source informatino and without a function name # # There may be others... use strict; use warnings; my $in_frame = 0; my $frame = ""; # Info about the current frame my $has_source_info = 0; # <dir>, <file>, <line> my $has_function_name = 0; # <fn> my $has_system_obj = 0; # <obj>/lib... or <obj>/usr/lib... while (my $line = <>) { if (! $in_frame) { if ($line =~ /<frame>/) { $frame = $line; $in_frame = 1; $has_source_info = $has_function_name = $has_system_obj = 0; } else { print $line; } next; } # We're in a frame $frame .= $line; if ($line =~ /<\/frame>/) { # Is this a frame we want to keep? my $ignore_frame = $has_system_obj || (! $has_source_info && ! $has_function_name); if (! $ignore_frame) { print $frame; } $in_frame = 0; } else { $has_source_info = 1 if ($line =~ /<(dir|file|line)>/); $has_function_name = 1 if ($line =~ /<fn>/); # This may require tweaking; currently /lib and /usr/lib are matched $has_system_obj = 1 if ($line =~ /<obj>\/lib/); $has_system_obj = 1 if ($line =~ /<obj>\/usr\/lib/); } } exit 0;