2010-03-25 43 views
0

我有一個關於在Mac上鯊魚分析的問題。如何在Shell腳本循環中使用Shark在Mac上剖析C程序?

說,如果我有一個C程序,編譯:

gcc -o mycprog mycprog.c -g -pg 

而且我有一個shell腳本是這樣的:

for file in ($SomeDirectory) 
do 
    mycprog $file 
done 

我需要天寒所有文件的平均表現在$ SomeDirectory中。

我應該在哪裏放置shark -i命令?謝謝。

回答

0

這是不是一個偉大的方式,以各種理由 - 最好你應該修改你的程序的外環,以便它可以處理在命令行上的所有文件,那麼你可以做的一切在一次運行:

$ shark -i 
$ mycprog $SomeDirectory/* 

如果你不能這樣做,那麼你將需要設置你的Shark配置來進行系統範圍的性能分析,並在你的bash循環之前啓動性能分析並在之後停止性能分析。當您隨後查看Shark中的配置文件時,您將能夠過濾出您不感興趣的進程。

首先打開Shark(GUI應用程序),設置您的配置並啓用遠程控制(Sampling = >Programmatic)。確保您選擇了Time ProfileEverything

命令行

然後:

$ chudRemoteCtrl -s "mycprog" 
$ sleep 1 
$ for f in $SomeDirectory/* 
$ do 
$  mycprog $SomeDirectory/$f 
$ done 
$ chudRemoteCtrl -e 
+0

感謝您的答覆。 修改我的c程序的行爲是非常困難的。 – 2010-03-25 15:13:46

+0

@Peter:它不應該那麼難 - 你需要添加的只是main()中的一個額外的循環,它會在命令行上反覆運行你的代碼。 – 2010-03-25 16:17:09

+0

感謝您的回覆。我明白你的意思。 我在這裏發佈的例子非常簡單。在shell腳本中有很多循環條件,所以我很難改變c程序的源代碼。 我只想知道是否有任何解決方案使用鯊魚程序控制或其他東西。 另一個快速問題在這裏: 我用: shark -i mycprog -o mycprogsessionname -o選項根本不起作用,這對我來說很奇怪。我搜索了很多,但沒有成功。 – 2010-03-25 16:24:55