Windows cmd перенаправляет вывод подкоманды в файл

Я пытаюсь отладить приложение с помощью cuda-memcheck. Я хочу перенаправить вывод моего приложения в один файл, но, с другой стороны, перенаправить stdout и stderr cuda-memcheck в другой файл. Но я не могу заставить его работать. Этот:

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

абсолютно ничего не делает. Но если я удалю перенаправление внутри кавычек (игнорируя вывод моего приложения), оно будет выполнено. Итак, вопрос в том, как перенаправить stdout подкоманды?


person Jofo    schedule 13.05.2016    source источник
comment
Вы пробовали использовать cmd вариант --log-file и / или --save из cuda-memcheck?   -  person kangshiyin    schedule 13.05.2016
comment
Это перенаправляет вывод memcheck, но не вывод запускаемого приложения.   -  person Jofo    schedule 13.05.2016


Ответы (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 

Команда Run:

$ 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!
person kangshiyin    schedule 13.05.2016
comment
все еще не работает, app.stdout.txt пуст после отладки - person Jofo; 13.05.2016
comment
@Jofo Пожалуйста, посмотрите мой тест. Не уверен, почему это не работает для вас. - person kangshiyin; 13.05.2016
comment
@Jofo Работает на CentOS. Вам могут потребоваться некоторые изменения в Windows. - person kangshiyin; 13.05.2016
comment
Проблема моего приложения в том, что оно обычно ничего не выводит в консоль (это приложение Win32, а не консольное приложение). Если я хочу увидеть стандартный вывод, мне нужно перенаправить его в файл при запуске приложения. Итак, app.exe ›› output.txt работает, но если я введу в консоль только имя приложения, я ничего не увижу. - person Jofo; 13.05.2016
comment
@Jofo Может быть, вам нужно изменить код вашего приложения для печати в какой-то файл по умолчанию. Вам не нужно использовать printf () в приложении Win32, если нет шансов увидеть результат в консоли. - person kangshiyin; 13.05.2016
comment
@Jofo app.exe > stdout1.txt работает должным образом (без проверки памяти)? - person Ivan Aksamentov - Drop; 14.05.2016