【问题标题】:Windows cmd redirect subcommand output to fileWindows cmd 将子命令输出重定向到文件
【发布时间】:2016-09-09 12:48:30
【问题描述】:

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

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

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

【问题讨论】:

  • 你试过cuda-memcheck的cmd选项--log-file和/或--save吗?
  • 重定向 memcheck 输出,但不重定向它启动的应用程序的输出。

标签: windows command-line cmd cuda output-redirect


【解决方案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!

【讨论】:

  • 还是不行,调试后“app.stdout.txt”为空
  • @Jofo 请看我的测试。不知道为什么它不适合你。
  • @Jofo 它适用于 CentOS。您可能需要在 Windows 上进行一些更改。
  • 我的应用程序的问题是它通常不会将任何内容打印到控制台(它是 Win32 应用程序,而不是控制台应用程序)。如果我想查看标准输出,我需要在应用程序运行时将其重定向到一个文件中。所以 app.exe >>output.txt 可以工作,但如果我只在控制台中输入应用程序名称,我什么也看不到。
  • @Jofo 也许您必须修改应用程序的代码才能默认打印到某个文件。如果没有机会在控制台中看到输出,则无需在 Win32 应用程序中使用 printf()。
猜你喜欢
  • 2021-09-09
  • 2018-06-07
  • 1970-01-01
  • 2015-10-30
  • 1970-01-01
  • 2012-07-05
  • 2010-09-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多