From 0acfabde7d5d4bccc4098aba84c47b9787a6136e Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Tue, 27 Dec 2022 21:39:55 +0000 Subject: rproxy: have addr2line show inlines and function names They're useful, IMHO. The ADDR2LINE environment can override it, of course. --- lib/Devel/Mwrap/Rproxy.pm | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/Devel/Mwrap/Rproxy.pm b/lib/Devel/Mwrap/Rproxy.pm index 19fff59..b2bee8c 100644 --- a/lib/Devel/Mwrap/Rproxy.pm +++ b/lib/Devel/Mwrap/Rproxy.pm @@ -133,15 +133,17 @@ sub new { my ($cls, $exe) = @_; pipe(my ($rd, $_wr)) or die "pipe: $!"; pipe(my ($_rd, $wr)) or die "pipe: $!"; - my $addr2line = $ENV{ADDR2LINE} // 'addr2line'; + # -f/--functions needs -p/--pretty-print to go with it + my $addr2line = $ENV{ADDR2LINE} // 'addr2line -i -p -f'; + my @addr2line = split(/\s+/, $addr2line); my $pid = fork // die "fork: $!"; if ($pid == 0) { close $rd; close $wr; open STDIN, '<&', $_rd or die "STDIN: $!"; open STDOUT, '>&', $_wr or die "STDOUT: $!"; - exec $addr2line, '-e', $exe; - die "exec $addr2line -e $exe: $!"; + exec @addr2line, '-e', $exe; + die "exec @addr2line -e $exe: $!"; } $_rd = $_wr = undef; $wr->autoflush(1); -- cgit v1.2.3-24-ge0c7