如何在 Mac 上使用 Shark 在 Shell 脚本循环中分析 C 程序?

发布于 2024-08-26 03:13:55 字数 317 浏览 4 评论 0原文

我有一个关于 Mac 上 Shark 分析的问题。

假设我有一个 C 程序,编译为:

gcc -o mycprog mycprog.c -g -pg

并且我还有一个类似于以下内容的 shell 脚本:

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

我需要分析 $SomeDirectory 中所有文件的平均性能。

我应该将 shark -i 命令放在哪里?谢谢。

I have a question about Shark-profiling on mac.

Say if I have a C-program, compiled with:

gcc -o mycprog mycprog.c -g -pg

and also I have a shell script something like:

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

I need to profile the average performance for all files in $SomeDirectory.

Where should I put the shark -i command? Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

终难愈 2024-09-02 03:13:55

由于各种原因,这不是一个好方法 - 理想情况下,您应该修改程序的外循环,以便它可以处理命令行上的所有文件,然后您可以在一次运行中完成所有操作:

$ shark -i
$ mycprog $SomeDirectory/*

如果您不能这样做,那么您需要为系统范围的分析设置 Shark 配置,并在 bash 循环之前开始分析,然后停止分析。当您随后在 Shark 中查看配置文件时,您将能够过滤掉您不感兴趣的进程。

首先打开 Shark(GUI 应用程序),设置您的配置并启用远程控制(Sampling => <代码>编程)。确保您已选择时间配置文件一切

然后从命令行:

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

This is not a great approach, for various reasons - ideally you should modify your program's outer loop so that it can process all the files on the command line, then you can just do everything in one run:

$ shark -i
$ mycprog $SomeDirectory/*

If you can't do that then you will need to set your Shark configuration for system-wide profiling and start profiling before your bash loop and stop profiling afterwards. When you subsequently view the profile in Shark you'll be able to filter out the processes that you're not interested in.

Firstly open Shark (the GUI app), set up your configuration and enable remote control (Sampling => Programmatic). Make sure you have Time Profile and Everything selected.

Then from the command line:

$ chudRemoteCtrl -s "mycprog"
$ sleep 1
$ for f in $SomeDirectory/*
$ do
$     mycprog $SomeDirectory/$f
$ done
$ chudRemoteCtrl -e
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文