File tree Expand file tree Collapse file tree 1 file changed +37
-5
lines changed Expand file tree Collapse file tree 1 file changed +37
-5
lines changed Original file line number Diff line number Diff line change @@ -73,12 +73,44 @@ fn execute_tests(test_cases: &[&dyn TestCase], exec_opts: ExecuteOptions) -> Out
73
73
fn execute_single_test ( case : & dyn TestCase , exec_opts : ExecuteOptions ) -> Outcome {
74
74
println ! ( "------ {} ------" , case. name( ) ) ;
75
75
let self_exe = std:: env:: current_exe ( ) . unwrap ( ) ;
76
+ let tmp = tempfile:: tempdir ( ) . unwrap ( ) ;
76
77
let mut cmd = if exec_opts. trace {
77
- let mut cmd = std:: process:: Command :: new ( "strace" ) ;
78
- cmd. arg ( "-f" ) ; // follow forks
79
- cmd. arg ( "-o" ) . arg ( format ! ( "strace-log-{}.txt" , case. name( ) ) ) ;
80
- cmd. arg ( self_exe) ;
81
- cmd
78
+ if cfg ! ( target_os = "linux" ) {
79
+ let mut cmd = std:: process:: Command :: new ( "strace" ) ;
80
+ cmd. arg ( "-f" ) ; // follow forks
81
+ cmd. arg ( "-o" ) . arg ( format ! ( "strace-log-{}.txt" , case. name( ) ) ) ;
82
+ cmd. arg ( self_exe) ;
83
+ cmd
84
+ } else if cfg ! ( target_os = "windows" ) {
85
+ let mut cmd = std:: process:: Command :: new ( "cdb" ) ;
86
+ // disable debug heap
87
+ cmd. arg ( "-hd" ) ;
88
+ // follow children
89
+ cmd. arg ( "-o" ) ;
90
+
91
+ let script_file_path = tmp. path ( ) . join ( "script.txt" ) ;
92
+
93
+ std:: fs:: write (
94
+ & script_file_path,
95
+ [
96
+ "!logexts.loge" ,
97
+ "!logexts.logc e *" ,
98
+ "!logexts.logo e d" ,
99
+ "g" ,
100
+ "!logexts.logb p" ,
101
+ "q"
102
+ ]
103
+ . join ( "\n " ) ,
104
+ )
105
+ . unwrap ( ) ;
106
+
107
+ cmd. arg ( "-cf" ) . arg ( & script_file_path) ;
108
+
109
+ cmd. arg ( self_exe) ;
110
+ cmd
111
+ } else {
112
+ panic ! ( "--trace unsupported on this target" )
113
+ }
82
114
} else {
83
115
std:: process:: Command :: new ( self_exe)
84
116
} ;
You can’t perform that action at this time.
0 commit comments