2016-05-13 142 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

相關問題