我有多次的memcpy的正從不同的地方稱爲過程的memcpy。 有沒有辦法統計有多少的memcpy命令執行過程中已經啓動?如何計算一個C++程序
0
A
回答
0
如果你正在尋找一個工具,我建議callgrind。 Callgrind是一個概要分析工具,可以將程序運行過程中函數的調用歷史記錄爲調用圖。它是valgrind套件中的免費工具。
文檔可以在這裏找到: callgrind manual
0
沒有什麼便攜。 memcpy
調用通常由編譯器處理,對於較小的類型內聯,即使<cstring>
標頭直接或間接聲明memcpy
表示它是extern
而不是inline
。因此,有可能是沒有辦法知道是否是因爲在源代碼中的memcpy
的生成機器碼。你可能會也可能不會在意。
警告:醜陋的黑客如下
FWIW,如果你能重新編譯應用程序,並只是在做此故障排除或興趣 - 而不是用於生產 - 你可以嘗試破解它如下,只是看它是否發生在你的系統上合計持有:
#include <cstring>
#include <iostream>
#include <map>
#include <string>
#include <utility>
std::map<std::pair<std::string, int>, int> g_memcpy_calls;
namespace std
{
inline void*
instrumented_memcpy(void* dest, void* src, std::size_t count,
const char file[], int line)
{
++g_memcpy_calls[std::make_pair(file, line)];
return std::memcpy(dest, src, count);
}
}
// may or may not need it at global scope too...
inline void*
instrumented_memcpy(void* dest, void* src, std::size_t count,
const char file[], int line)
{
return std::instrumented_memcpy(dest, src, count, file, line);
}
#define memcpy(DEST, SRC, COUNT) \
instrumented_memcpy(DEST, SRC, COUNT, __FILE__, __LINE__)
int main()
{
char a, b;
for (b = 'x'; b != 'z'; ++b)
std::memcpy(&a, &b, sizeof a);
std::memcpy(&a, &b, sizeof a);
for (auto& where : g_memcpy_calls)
std::cout << where.first.first << ':' << where.first.second
<< " called " << where.second << " times\n";
}
注意:g_memcpy_calls
,你可能擺脫使用const char*
代替std::string
,如果你的編譯器將確保__FILE__
返回任何給定的源文件中的所有用途的單一const char*
值,但是這只是一個可能出問題的地方還有一點....
相關問題
- 1. C++第一個程序 - 計算器
- 2. 如何在c/C++中創建一個hello world雲計算應用程序
- 3. C#計算器程序#
- 4. C++程序內存計算
- 5. C程序:計算利息
- 6. 如何測試另一臺計算機上VS C#程序
- 7. WordCount程序不計算第一個字
- 8. 如何讓用戶輸入一個C++程序來計算單詞的數量?
- 9. 計算一個C#結構
- 10. C程序來計算一個NxN矩陣的行列式
- 11. 創建C程序計算百分比給我一個問題
- 12. 如何在ruby中創建一個終端計算器程序?
- 13. 如何使一個Prolog程序返回它計算
- 14. 如何使一個Java程序打開計算器應用程序「X」次數
- 15. 如何在C++中計算進程?
- 16. Matlab計算與'C/C++'計算..哪一個是有效的?
- 17. 如何將C#應用程序從一臺計算機安裝到另一臺計算機
- 18. 在一個字符串中計算一個序列C語言
- 19. C編程計算
- 20. 如何設計一個python GUI程序
- 21. 計算貸款計算器程序總利息的問題(C++)
- 22. 如何設計一個程序來執行復雜的財務計算與NET
- 23. C程序,堆棧計算器
- 24. 提高C程序的計算速度
- 25. C++計算器程序 - 查找因子
- 26. 用於計算CRC的C程序
- 27. C++計算程序沒有響應
- 28. C程序計算平均值
- 29. 程序來計算平方根C++
- 30. C程序來計算變化
有很多取決於您的平臺的方式,修改代碼的能力等等。 –