diff options
author | weidendo <weidendo@a5019735-40e9-0310-863c-91ae7b9d1cf9> | 2011-07-21 18:58:37 +0000 |
---|---|---|
committer | weidendo <weidendo@a5019735-40e9-0310-863c-91ae7b9d1cf9> | 2011-07-21 18:58:37 +0000 |
commit | e5704c94391a9790b92f34a7eb42ac22d8781a12 (patch) | |
tree | 736fca45893d321798c2959a61dc75c615575e73 /callgrind | |
parent | 130f6f5a47a1557a454b24db6e08431da6c8b9c1 (diff) |
callgrind_control: fix parsing of vgdb -l
If valgrind is called with absolute path (as qtcreator does),
callgrind_control found nothing, as it looked for
"... for valgrind ...", thus breaking qtcreator.
This also fixes expected behavior with client commands called with
absolute path. For "/usr/bin/valgrind --tool callgrind /usr/bin/foo",
running "callgrind_control foo" should catch this callgrind command.
Instead, you previously had to include the absolute path.
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11905 a5019735-40e9-0310-863c-91ae7b9d1cf9
Diffstat (limited to 'callgrind')
-rw-r--r-- | callgrind/callgrind_control.in | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/callgrind/callgrind_control.in b/callgrind/callgrind_control.in index 30f17634..6492d7b1 100644 --- a/callgrind/callgrind_control.in +++ b/callgrind/callgrind_control.in @@ -29,12 +29,15 @@ sub getCallgrindPids { @pids = (); open LIST, "vgdb -l|"; while(<LIST>) { - if (/^use --pid=(\d+) for valgrind\s+(.*)$/) { + if (/^use --pid=(\d+) for \S*?valgrind\s+(.*?)\s*$/) { $pid = $1; $cmd = $2; if (!($cmd =~ /--tool=callgrind/)) { next; } while($cmd =~ s/^-+\S+\s+//) {} + $cmdline{$pid} = $cmd; + $cmd =~ s/^(\S*).*/$1/; $cmd{$pid} = $cmd; + #print "Found PID $pid, cmd '$cmd{$pid}', cmdline '$cmdline{$pid}'.\n"; push(@pids, $pid); } } @@ -286,7 +289,7 @@ foreach $arg (@ARGV) { if (defined $cmd{$arg}) { $spids{$arg} = 1; next; } $nameFound = 0; foreach $p (@pids) { - if ($cmd{$p} =~ /^$arg/) { + if ($cmd{$p} =~ /$arg$/) { $nameFound = 1; $spids{$p} = 1; } @@ -327,7 +330,7 @@ if ($printStatus || $printBacktrace || $requestEvents) { foreach $pid (@pids) { $pidstr = "PID $pid: "; - if ($pid >0) { print $pidstr.$cmd{$pid}; } + if ($pid >0) { print $pidstr.$cmdline{$pid}; } if ($vgdbCommand eq "") { print "\n"; |