我在boost::child文档页面上看到了以下代码,它们解释了如何读取子进程的输出.
http://www.boost.org/doc/libs/1_64_0/doc/html/boost_process/tutorial.html
他们说在运行您的子进程后,我们可以通过这个循环读取它: -
bp::ipstream is; //reading pipe-stream
bp::child c(bp::search_patk("nm"), file, bp::std_out > is);
//then later
while (c.running() && std::getline(is, line) && !line.empty())
data.push_back(line);
Run Code Online (Sandbox Code Playgroud)
我在这里有2个问题: -
c.running()返回false,我们只需退出循环.在这种情况下,is上面的流可能仍会携带丢失的数据?我想捕捉两者stdout,stderr而不必担心nm已经退出或不退出.
我正在使用4-5 .c文件(每个大约2000到5000行),其中包括几个标题.目前我没有任何调试打印,这将有助于我在执行过程中调试程序.
我的问题是: - 是否有一种方法(或一些现有的工具)来解析.c文件并为.c文件中当前范围内的所有变量添加新的print语句集?就像VC++允许我们看到Locals和globals等一样.我需要在每一步都打印它们.此外,应该取消引用指针.
对于前者 让我们说.c文件中的一个点,有10个全局变量和3个本地变量.我需要生成智能printfs来打印这13个变量.在程序的后面,如果有20个变量,我应该能够打印20个变量等.包含的头文件包含每个
变量的所有相关声明(可以是结构/指针/数组或某些组合等等).我试图通过perl脚本实现这一点.
我做的是,我生成了预处理文件(.i文件),我尝试通过perl解析它,然后生成特定于每个变量的单独打印功能,但经过半天的努力,我意识到它太耗费时间.有没有一个工具已经做到了?如果不是这样,那么接近它的任何东西应该足够好(我可以在其上应用一些perl处理等)我的目标是在程序执行之后,在程序执行期间的每一步,我应该能够看到变量(有效)在那个范围),而不必调用调试器.
我被允许处理.c文件并再次重新编写等等.希望我的问题很清楚,谢谢你的回复.
通常在测试系统中,当我们编写新的测试用例时,我们需要在某处注册测试用例以便可以调用它。
例如,在测试系统中:
TESTCASE(a,b){...}可以映射到void testcase_a_b() {...}并且测试系统可以从主系统调用其中的每一个等void testcase_a_b(),void testcase_c_d()从而运行所有测试用例。
在可执行文件中自动注册测试用例的方法是什么?例如,在 Google Test 中(就像其他几个测试框架一样),如果我们调用它,它会自动执行可执行文件中RUN_ALL_TESTS()以 etc. 开头的所有声明。TEST(a,b)
TEST(a,b)Google Test 如何知道exe 中是否存在?我试图理解(从高级设计的角度)用 C++ 实现这样的系统的简单方法是什么。其中像 TEST(a,b) 这样的宏会自动将自身附加到有效测试用例列表中,以便可以从 main 运行它,而不必担心单独注册它。
我有一个像这样的项目:
|--CMakeLists.txt(1)
|--File1.cpp -W -W-all
|--Folder1
|--CMakeLists.txt(2)
|--File2.cpp -W -W-all -fno-rtti
Run Code Online (Sandbox Code Playgroud)
如上所示,File2.cpp需要使用进行编译,-fno-rtti而其他文件则应使用进行编译rtti。发生这种情况是因为我在项目中同时使用了clang和boost库。我这样写CMakeLists.txt(1):
SET (CMAKE_CXX_FLAGS "-std=c++11 -fexceptions -fno-rtti -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -Wno-long-long" )
Run Code Online (Sandbox Code Playgroud)
并且,CMakeLists.txt(2)我添加了以下内容:
add_definitions( -fno-rtti )
Run Code Online (Sandbox Code Playgroud)
上面没有用。实际上,以下任何一项均不适用于CMakeLists.txt(2)
set_property(SOURCE File2.cpp APPEND_STRING PROPERTY CMAKE_CXX_FLAGS " -fno-rtti ")
set_property(SOURCE File2.cpp APPEND_STRING PROPERTY COMPILE_FLAGS " -fno-rtti ")
ADD_DEFINITIONS(CMAKE_CXX_FLAGS " -fno-rtti ")
ADD_DEFINITIONS(COMPILE_FLAGS " -fno-rtti ")
ADD_DEFINITIONS( -fno-rtti )
Run Code Online (Sandbox Code Playgroud)
我有什么想念的吗?