2016-05-13 289 views
3

我正在尝试使用cuda-memcheck调试应用程序。我想要做的是将输出从我的应用重定向到一个文件,但另一方面,将cuda-memcheck的stdout和stderr重定向到另一个文件。但我无法得到它的工作。这个:Windows cmd重定向子命令输出到文件

cuda-memcheck "app.exe > stdout1.txt" > memcheck.log 2>&1 

什么也没做。但是,如果我删除引号内的重定向(忽略我的应用程序输出),它会执行。所以问题是,如何重定向子命令的stdout?

+0

您是否尝试过'clog-file'的cmd选项和/或'cuda-memcheck'的'--save'? – kangshiyin

+0

重定向memcheck输出,但不是它启动的应用程序的输出。 – Jofo

回答

1

根据您对cuda-memcheck的行为的评论,您可以使用以下命令。

cuda-memcheck --log-file memcheck.log app.exe >app.stdout.txt 

编辑

这是我在CentOS测试。它可能适用于Win32控制台应用程序,但不适用于Win32应用程序。

a.cu

#include <iostream> 
int main() { 
    std::cout<< "hello world to stdout!" <<std::endl; 
    std::cerr<< "hello world to stderr!" <<std::endl; 
    return 0; 
} 

编译命令:

$ nvcc -O3 -o a a.cu 

运行命令:

$ cuda-memcheck --log-file mem.log a >a.stdout.log 2>a.stderr.log 

结果文件:

$ cat mem.log 
========= CUDA-MEMCHECK 
========= ERROR SUMMARY: 0 errors 

$ cat a.stdout.log 
hello world to stdout! 

$ cat a.stderr.log 
hello world to stderr! 
+0

仍然无法正常工作,调试后的“app.stdout.txt”为空 – Jofo

+0

@Jofo请参阅我的测试。不知道为什么它不适合你。 – kangshiyin

+0

@Jofo它适用于CentOS。您可能需要在Windows上进行一些更改。 – kangshiyin