CPPNIUT使用過程常見問題FAQ

2021-06-08 07:12:49 字數 1422 閱讀 9480

cppniut使用過程常見問題faq

z00165390  20101225

1.  如何對函式中一次或者多次malloc函式呼叫進行處理

test.c

void foo(void)

.. .. ....

b =malloc(100);

if(null == b)

}常規的對 malloc打樁後,走到第乙個malloc就會返回,無法覆蓋第二個malloc函式。

處理方法:重構malloc函式進行封裝

定義函式void *malloc_array(int32 length)

memset(array, 0, length*sizeof(uint8));

return(void*)array;

}然後原始碼調整為:

void foo(void)

然後再單獨對這個新定義的函式void *malloc_array(int32 length)做一次打樁處理做ut即可覆蓋void foo(void)函式中所有的 malloc分支。

2.  對靜態函式的打樁

static靜態函式範圍的為本檔案,顯然在另外乙個頁面中定義的ut函式是無法訪問原始碼中定義的static函式。

處理方法:將static函式做一次封裝

static int foo(char  argc, char* argv)

在原始檔中對該函式進行封裝,保持引數與原函式一致

int ut_foo(char argc, char* argv)

然後只要對外部可訪問的函式ut_foo做ut即可。

3、exit的處理方法

函式中使用了exit

int foo(char argc, char* argv)

return0;

}目前ut工具不支援直接對exit函式進行打樁,因此可以使用巨集替換的方式處理。

首先在原始碼中定義乙個函式

void exiterror(char* filename,uint32 linenum)

然後將foo()函式中所有的exit使用

exiterror((char*)__file__, __line__); return;替換,上述foo()函式修改為

int foo(char argc, char* argv)

return0;

}然後只要對函式exiterror進行打樁即可避免目前庫函式不能直接對exit進行打樁的限制。另外,對於這個新定義的exiterror函式中的exit函式做ut可以通過在原始碼中巨集替換的方式進行處理。

int utexiterror (void)

Git使用過程中常見問題

windows使用git時初始話時出現 warning lf will be replaced by crlf windows中的換行符為 crlf,而在linux下的換行符為lf,所以在執行add 時出現提示,解決辦法 rm rf git 刪除.git git config global core...

GDAL C 編譯使用過程中常見問題及解決方案

一,c 編譯過程中的問題及解決方案 q 未能找到型別或命名空間名稱 idisposable a 將以下內容新增進.swig csharp目錄下assemblyinfo.cs檔案開頭以及gdal,ogr和osr資料夾中的所有.cs檔案的開頭 using system using system.runt...

開發過程常見問題

需求變更,需求不清 1 需求變更 需求變更,不可避免 解決 可以通過配置化,好的 框架,減少調整量 2 需求不清 非需求變更,事實上客戶沒有那麼多需求變更,往往是沒有把握好客戶的真正需求導致返工。解決 明確需求後再開發,不要猜測需求,需求是由實際業務定的,開發時是a就是a,是b就是b,不要猜測,通過...