我正在嘗試爲我的項目生成覆蓋率報告。 .gcno文件按照預期爲共享對象代碼文件生成,但是當我運行可執行文件(使用生成的共享對象)時,.so也與可執行文件位於同一位置,但共享對象的.gcda文件不會生成而可執行代碼的.gcda文件按預期生成。 方法有問題嗎? 請注意使用gcov與可執行文件使用的共享對象
回答
它可能獲得共享libarary的覆蓋率。 我嘗試簡單的hello應用程序分析與gcov共享庫的概念,即時能夠獲得代碼覆蓋率。 讓拿兩個文件的hello.c和extlib.c
首先編譯extlib.c
#include <stdio.h>
extern void print(const char* p, ...);
void print(const char* p, ...) {
printf("%s World!\n", p);
}
gcc -shared -fPIC extlib.c -o libext.so -ftest-coverage -fprofile-arcs
在這裏會得到extlib.gcno libextlib.so
下一步鏈接到主要你好程序 //hello.c extern void print(cons t char *,...);
int main() {
print("Hello");
}
gcc hello.c -L./ -lextlib -o test -ftest-coverage -fprofile-arcs
這hello.gcno文件之後。 執行./test
執行後會得到使用gcov *.c
可以檢查覆蓋extlib.gcda和hello.gcda
。
所以我的建議嘗試一些簡單的文件在你的項目中分別編譯它與gcov分析。
謝謝,這有助於提供方式來糾正這個問題 – him
是你的問題解決了?如果是的話,你可以投票 –
- 1. 使用可執行文件分發共享對象(最佳實踐?)
- 2. 可以用gcov處理共享對象嗎?
- 3. 使用共享對象
- 4. 從共享對象調用主要可執行文件中的函數
- 5. fork不執行,pthread_mutex_t使用共享對象
- 6. gcov插裝共享對象引用__gcov_init隱藏符號
- 7. 使用gcov進行共享庫覆蓋測試[Linux/Fortran]
- 8. 在iOS中使用共享對象文件(.so文件)
- 9. 使用android intent與appcelerator共享文件
- 10. 使用wix在CustomAction上運行網絡共享上的可執行文件?
- 11. 共享文件夾執行
- 12. 的ActionScript:共享對象使用addEventListener
- 13. 如何使共享庫可執行
- 14. 使用Glide共享文件
- 15. 打開共享對話框以共享文件使用ACTION_SEND
- 16. 共享對象文件
- 17. 使用共享對象中的應用程序的對象
- 18. 在linux中使用共享庫執行二進制文件
- 19. 如何使用遠程共享對象
- 20. 如何使用共享對象
- 21. Qt使用共享COM對象
- 22. 在共享對象裏面使用RLock
- 23. 是否可以在共享對象文件中更改共享庫引用?
- 24. 使用JavaScript在HTML文件中共享JSON對象
- 25. 故障使用升壓,無法打開共享對象文件
- 26. 從.so(共享對象)內使用內存映射文件
- 27. 如何與其他用戶使用Parse with iOS共享對象?
- 28. 鏈接共享庫可執行與另一個共享庫
- 29. 使用子進程和共享庫時gcov沒有覆蓋
- 30. 與某些用戶共享對象
[gcov:從共享庫生成.gcda輸出的可能的副本](http://stackoverflow.com/questions/3712908/gcov-producing-gcda-output-from-shared-library) – mvp
我有gcc 4.1工具鏈,是否支持4.1以上參考gcc 4.5共享的鏈接? – him
你能否提供關於你編譯的地方以及你的可執行文件在哪裏運行的細節,即你是否在你構建的地方運行可執行文件? –