@@ -53,7 +53,7 @@ std::string run_command( const std::string& command )
53
53
return " " ;
54
54
}
55
55
56
- void print_stacktrace_linenums ( void ** addrlist, int addrlen )
56
+ void print_stacktrace_linenums (std::ostream& out, void ** addrlist, int addrlen )
57
57
{
58
58
if ( addrlen == 0 )
59
59
return ;
@@ -63,6 +63,7 @@ void print_stacktrace_linenums( void** addrlist, int addrlen )
63
63
if ( result < 0 )
64
64
{
65
65
std::cerr << " print_stacktrace_linenums() failed, could not read PID" << std::endl;
66
+ out << " print_stacktrace_linenums() failed, could not read PID" << std::endl;
66
67
return ;
67
68
}
68
69
else
@@ -75,10 +76,10 @@ void print_stacktrace_linenums( void** addrlist, int addrlen )
75
76
for ( int i=0 ; i<addrlen; i++ )
76
77
ss_cmd << " " << std::setfill (' 0' ) << std::setw (16 ) << std::hex << std::noshowbase << uint64_t (addrlist[i]);
77
78
std::string cmd = ss_cmd.str ();
78
- std::cerr << " executing command:" << std::endl;
79
- std::cerr << cmd << std::endl ;
79
+ out << " executing command:" << ' \n '
80
+ << cmd << ' \n ' ;
80
81
std::string output = run_command (cmd);
81
- std::cerr << output << std::endl ;
82
+ out << output << ' \n ' ;
82
83
}
83
84
84
85
void print_stacktrace (std::ostream& out, unsigned int max_frames /* = 63 */ , void * caller_overwrite_hack /* = nullptr */ )
@@ -163,7 +164,7 @@ void print_stacktrace(std::ostream& out, unsigned int max_frames /* = 63 */, voi
163
164
}
164
165
}
165
166
166
- print_stacktrace_linenums (addrlist, addrlen);
167
+ print_stacktrace_linenums (out, addrlist, addrlen);
167
168
168
169
free (funcname);
169
170
free (symbollist);
@@ -197,7 +198,7 @@ void segfault_handler(int sig_num, siginfo_t * info, void * ucontext)
197
198
#endif
198
199
199
200
// avoids compiler warning
200
- // FC_UNUSED(caller_address) ;
201
+ ( void )caller_address ;
201
202
202
203
print_stacktrace ( std::cerr, 128 , nullptr );
203
204
std::exit (EXIT_FAILURE);
0 commit comments