【发布时间】:2013-10-17 14:08:49
【问题描述】:
我想在我的 c++ 文件中的某行(模式)之后插入一些文本。以下是我的文件结构。
38 #include "stdlib.h"
39 #include "string.h"
40 #include "malloc.h"
41
...
324 void DMProcMon::threadManagerMonitorThread(DMProcMon* dmProcMon)
325 {
...
338 while (dmState == DVProcMon::Active &&
339 DmManService::getDCMRestartingFlag() == 0){
340 try{
342 setupTimerVerification(dmProcMon);
343 setupSignalVerification(dmProcMon);
344
....
360 }
我想使用 gcov 添加代码覆盖宏。所以基本上我需要实现的是
-
在所有#include 语句之后添加以下文本。
45 #ifdef GCOV 46 extern "C" 47 void _gcov_flush(); 48 #endif -
在threadManagerMonitorThread函数的while语句后添加以下文本
#ifdef GCOV _gcov_flush(); #endif
所以最终代码如下所示。
38 #include "stdlib.h"
39 #include "string.h"
40 #include "malloc.h"
41
45 #ifdef GCOV
46 _gcov_flush();
47 #endif
...
324 void DMProcMon::threadManagerMonitorThread(DMProcMon* dmProcMon)
325 {
...
338 while (dmState == DVProcMon::Active &&
339 DmManService::getDCMRestartingFlag() == 0){
340 try{
342 #ifdef GCOV
343 _gcov_flush();
344 #endif
346 setupTimerVerification(dmProcMon);
347 setupSignalVerification(dmProcMon);
348
....
360 }
最好的方法是什么。我想用 bash 或 pythyon 来做到这一点。
谢谢 ~S
【问题讨论】:
-
您可能想了解如何使用
ed,请参阅its documentation -
Awk应该是正确的工具,它通过正则表达式处理行并为文本编辑提供强大的语言。 -
您的第一个
ifdef部分未包含在您的最终代码中。第二部分不是在while之后,而是在try之后。有什么关系?
标签: bash