在 Ubuntu 中使用 WSL1 和“gcc”時,我遇到了“gprof”的問題。它顯示的唯一資訊是“呼叫”,其他任何資訊都設定為 0.00。我不認為這是因為程式運行得太快,因為在鍵入時time ./go
它會回傳:
real = 0.569s; user = 0.547s; sys = 0.000s.
主程式(go.c)是:
#include <stdio.h>
#include "functions.h"
#define maxloop 1e7
int main(int argc, char*argv[]) {
int i;
double x;
double xsum = 0.0;
for (i = 1; i < maxloop; i ) {
x = myFun1(i) myFun2(i) myFun3(i);
xsum = x;
}
printf("xsum = %.6f\n", xsum);
return 0;
}
帶有函式(functions.c)的檔案是:
#include <math.h>
double myFun1(double x) {
double a = sin(x);
return a;
}
double myFun2(double x){
double a = pow(x,3);
return a;
}
double myFun3(double x){
double a = sqrt(x);
return a;
}
頭檔案(functions.h)是:
double myFun1(double x);
double myFun2(double x);
double myFun3(double x);
我在終端中編譯為:
gcc -pg -o go go.c functions.c -lm
將 gprof 運行為:
gprof ./go -p -b
uj5u.com熱心網友回復:
升級到 WSL2 以支持 gprof 所需的分析功能。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/507723.html
標籤:C ubuntu windows-subsystem-for-linux gprof