首先,我用的是Ubuntu 14.04
所以,这是我的问题:我正在处理一个带有图形界面(游戏/音乐播放器等)的c++代码应用程序。每当有事情发生时,这个应用程序就会不断地向日志记录器发送字符串,但是这些字符串只在客户端内部可见。
我已经尝试过做什么(失败):
-
跟踪应用程序并过滤结果(假设如果应用程序显示消息"Hello, user",我将把所有输出记录到测试文件中并搜索"Hello")
-
跟踪应用程序
-
使用dbg
调试应用程序 查找C/c++应用程序的调试方法
我从最后一种方法中得到的是程序通常通过clog
流记录错误和消息。我可以做些什么来检索这些信息?
继续,我有一个图形C/c++编码的应用程序,在客户端内部的窗口上恒定输入字符串;我想读取这些字符串或任何其他字符串/输入这个应用程序做。任何调试/内存读取信息也可能有所帮助!
谢谢
-
std::cout
对应stdout
流;std::cerr
和std::clog
对应stderr
流。 -
终端默认显示发送到
stdout
和stderr
的内容。
要查看它,只需打开终端模拟器(或者,或者,终端),键入程序所在的路径,并使用Enter确认。您将看到发送到stdout
和stderr
的内容。 -
stdout
用1
表示,stderr
用2
表示。 -
Next提示设计用于
bash
shell。(它们可能在另一个shell上工作,但不是必须的)。如果你不确定你使用的是bash
,在终端中输入bash
,并使用Enter确认。 -
当你想发送流的内容到文件,在路径之后(但在按Enter键之前)写空间和
n>filename
,其中n
是你想要重定向的流的数量(当跳过时,1
=stdout
将被重定向)。 -
当你想完全忽略流的内容,重定向流到
/dev/null
-
当你想发送
stdout
到另一个程序(如果第二个程序是控制台程序,它将看到它像用户使用键盘输入),在path之后(但在按Enter之前)键入|program_name and_possible_parameters
。例如,您可以将stdout
重定向到grep
。grep
将只写包含字符串作为参数传递的行(在grep
之后,键入空格和字符串,如果包含空格,使用""
或''
分隔参数,如果包含'
,"
或在其前面使用反斜杠(
))。如果它的结果将出现在终端中,我建议在
grep
和argument之间写--color=auto
,告诉grep
用不同的颜色来写每次出现的argument。最后,您的命令看起来像path_to_your_program |grep --color=auto "argument"
. -
一个命令中可以使用多个重定向。
重定向从左向右处理 - 当你想重定向
stderr
到另一个程序的输入,你可以重定向它的内容到stdout
输入2>&1
,然后使用|
。