Windows cmd перенаправить вывод подкоманды в файл
Я пытаюсь отладить приложение с помощью cuda-memcheck. Я хочу перенаправить вывод из моего приложения в один файл, но, с другой стороны, перенаправить stdout и stderr cuda-memcheck в другой файл. Но я не могу заставить его работать. Это:
cuda-memcheck "app.exe > stdout1.txt" > memcheck.log 2>&1
абсолютно ничего не делает. Но если я удаляю перенаправление внутри кавычек (игнорируя вывод моего приложения), оно выполняется. Итак, вопрос в том, как перенаправить стандартный вывод подкоманды?
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!