如何修改 C 程序以便 gprof 可以分析它?

2024-02-12

当我在我的 C 程序上运行 gprof 时,它说我的程序没有累积时间,并且所有函数调用都显示 0 时间。但是它确实对函数调用进行计数。

如何修改我的程序,以便 gprof 能够计算某项运行所需的时间?


编译的时候有没有指定-pg?

http://sourceware.org/binutils/docs-2.20/gprof/Compiling.html#Compiling http://sourceware.org/binutils/docs-2.20/gprof/Compiling.html#Compiling

编译完成后,运行该程序,然后对二进制文件运行 gprof。

E.g.:

test.c:

#include <stdio.h>

int main ()
{
    int i;
    for (i = 0; i < 10000; i++) {
        printf ("%d\n", i);
    }
    return 0;
}

编译为cc -pg test.c,然后运行为a.out, then gprof a.out, 给我



granularity: each sample hit covers 4 byte(s) for 1.47% of 0.03 seconds

  %   cumulative   self              self     total           
 time   seconds   seconds    calls  ms/call  ms/call  name    
 45.6       0.02     0.02    10000     0.00     0.00  __sys_write [10]
 45.6       0.03     0.02        0  100.00%           .mcount (26)
  2.9       0.03     0.00    20000     0.00     0.00  __sfvwrite [6]
  1.5       0.03     0.00    20000     0.00     0.00  memchr [11]
  1.5       0.03     0.00    10000     0.00     0.00  __ultoa [12]
  1.5       0.03     0.00    10000     0.00     0.00  _swrite [9]
  1.5       0.03     0.00    10000     0.00     0.00  vfprintf [2]
  

你得到什么?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何修改 C 程序以便 gprof 可以分析它? 的相关文章

  • 将字节数组转换为托管结构

    更新 这个问题的答案帮助我编写了开源项目GitHub 上的 AlicanC 现代战争 2 工具 https github com AlicanC AlicanC s Modern Warfare 2 Tool 你可以看到我是如何阅读这些数据
  • SSL/TLS/HTTPS 站点在 C#/.NET WebBrowser 控件中非常慢,但在 Internet Explorer 中则很好

    背景 我正在修改自动维基浏览器 http en wikipedia org wiki Wikipedia AutoWikiBrowser使用托管在安全服务器上的 MediaWiki 站点 我允许用户通过 C 应用程序中的 WebBrowse
  • 为什么大多数平台上没有“aligned_realloc”?

    MSVC有自己的非标准函数 aligned malloc aligned realloc and aligned free C 17和C11引入了 std aligned alloc 其结果可以是de分配有free or realloc B
  • (const T v) 在 C 中从来都不是必需的,对吗?

    例如 void func const int i 在这里 const是不必要的 因为所有参数都是按值传递的 包括指针 真的吗 C 中的所有参数确实都是按值传递 这意味着无论您是否包含该参数 实际参数都不会改变const or not 然而
  • 无需 cron 在后台发送邮件

    我想知道是否有一种方法可以运行 PHP 循环 以便在后台向订阅者发送几百封电子邮件 我的目标是格式化新闻通讯 单击发送 然后关闭浏览器或更改页面 当然 发送电子邮件的实际过程将在后台运行 不会因浏览器关闭而中断 我知道这可以通过 cron
  • 将字符串中的“奇怪”字符转换为罗马字符

    我需要能够将用户输入仅转换为 a z 罗马字符 不区分大小写 所以 我感兴趣的角色只有26个 然而 用户可以输入他们想要的任何 形式 的字符 西班牙语 n 法语 e 和德语 u 都可以包含用户输入中的重音符号 这些重音符号会被程序删除 我已
  • 带 If 的嵌套 For 循环的时间复杂度

    void f int n for int i 1 i lt n i if i int sqrt n 0 for int k 0 k lt pow i 3 k do something 我的思考过程 执行if语句的次数 sum i 1 to
  • 劫持系统调用

    我正在编写一个内核模块 我需要劫持 包装一些系统调用 我正在暴力破解 sys call table 地址 并使用 cr0 来禁用 启用页面保护 到目前为止一切顺利 一旦完成 我将公开整个代码 因此如果有人愿意 我可以更新这个问题 无论如何
  • 将带有 glut 的点击坐标添加到向量链接列表中

    我想创建一个向量链接列表 并在 GLUT 库的帮助下获取点击的位置并将它们附加到链接列表中 这些是我写的结构 typedef struct vector int x int y Vector typedef struct VectorLis
  • 从 Code::Blocks 运行程序时出现空白控制台窗口 [重复]

    这个问题在这里已经有答案了 当我尝试在 Code Blocks 中构建并运行新程序时 控制台窗口弹出空白 我必须单击退出按钮才能停止它 它对我尝试过的任何新项目 包括 Hello world 都执行此操作 奇怪的是 它对于我拥有的任何旧项目
  • OpenCV 2.4.3 中的阴影去除

    我正在使用 OpenCV 2 4 3 最新版本 使用内置的视频流检测前景GMG http docs opencv org modules gpu doc video html highlight gmg gpu 3a 3aGMG GPU算法
  • C++11 动态线程池

    最近 我一直在尝试寻找一个用于线程并发任务的库 理想情况下 是一个在线程上调用函数的简单接口 任何时候都有 n 个线程 有些线程比其他线程完成得更快 并且到达的时间不同 首先我尝试了 Rx 它在 C 中非常棒 我还研究了 Blocks 和
  • asp.net网格分页的SQL查询

    我在用iBatis and SQLServer 使用偏移量和限制进行分页查询的最佳方法是什么 也许我添加该列ROW NUMBER OVER ORDER BY Id AS RowNum 但这只会阻止简单查询的数据访问 在某些情况下 我使用选择
  • WPF。如何从另一个窗口隐藏/显示主窗口

    我有两个窗口 MainWindow 和 Login 显示登录的按钮位于主窗口 this Hide Login li new Login li Show 登录窗口上有一个检查密码的按钮 如果密码正确 我如何显示主窗口 将参数传递给 MainW
  • 0-1背包算法

    以下 0 1 背包问题是否可解 浮动 正值和 浮动 权重 可以是正数或负数 背包的 浮动 容量 gt 0 我平均有 这是一个相对简单的二进制程序 我建议用蛮力进行修剪 如果任何时候你超过了允许的重量 你不需要尝试其他物品的组合 你可以丢弃整
  • 从 Delphi 调用 C# dll

    我用单一方法编写了 Net 3 5 dll 由Delphi exe调用 不幸的是它不起作用 步骤 1 使用以下代码创建 C 3 5 dll public class MyDllClass public static int MyDllMet
  • C 中带有指针的结构的内存开销[重复]

    这个问题在这里已经有答案了 我意识到当我的结构包含指针时 它们会产生内存开销 这里有一个例子 typedef struct int num1 int num2 myStruct1 typedef struct int p int num2
  • 如何引用解决方案之外的项目?

    我有一个 Visual Studio C 解决方案 其中包含一些项目 其中一个项目需要引用另一个不属于解决方案的项目 一开始我引用了dll
  • Visual Studio 2017 完全支持 C99 吗?

    Visual Studio 的最新版本改进了对 C99 的支持 最新版本VS2017现在支持所有C99吗 如果没有 C99 还缺少哪些功能 No https learn microsoft com en us cpp visual cpp
  • 以 UTF8 而不是 UTF16 输出 DataTable XML

    我有一个 DataTable 我正在使用 WriteXML 创建一个 XML 文件 尽管我在以 UTF 16 编码导出它时遇到问题 并且似乎没有明显的方法来更改它 我了解 NET 在字符串内部使用 UTF 16 这是正确的吗 然后 我通过

随机推荐

  • 无法在 gradle 文件中应用“android-reporting”

    当我把apply plugin android reporting 按照建议在我的项目级别 build gradle 文件中here https developer android com studio test command line
  • Notepad++ 在左侧显示打开的文件

    在 Notepad 中 有没有办法在左侧列表中显示当前打开的文件列表 而不是使用默认的选项卡视图 我希望它类似于 TextPad 显示当前打开的文件的方式 我指的不是允许我打开新文件的资源管理器 我只是不喜欢打开许多文件时顶部的选项卡 设置
  • 带有错误句柄的自定义验证 Ninja 表单

    我在 WordPress 安装中使用 Ninja Form 插件 我的表单有 3 个输入文本字段 在按下提交按钮后 我需要通过检查输入的值是否存在于我的数据库中的自定义表中来验证此输入之一 如果该值尚不存在 则不会发生任何情况 Ninja
  • Python argparse 条件要求

    如何设置 argparse 如下 if 2 is on the command line no other arguments are required if 2 is not on the command line 3 and 4 arg
  • Java 电子邮件监听器

    我遇到了 IdleManager 类和 watch 方法 它使 imap 文件夹保持打开状态 并且理论上正在监视新消息 但如何让它在新电子邮件到达时输出或通知 代码 public static void main String args t
  • 报表查看器.rdlc 如何传递参数?

    显然 我一直在 C Windows 表单中制作试算表报告 报告查看器 其中显示 帐户 的年度报告及其每个帐户中的应付总额 该报告具有假定的年度复利值 具体取决于用户的选择 ex Jan 1 2013 to Feb 1 2014 将会有一个复
  • IDEA 以及如何禁用 gradle 包装器生成?

    我是 IJ IDEA 和 Gradle KTS 的新手 我手动创建了 kts 并将其导入到 IJ 中 IDEA 已经生成了 gradle 包装器 但我不想要这个 如果我删除 gradle 包装器和关联的目录 IDEA 会提示我从 gradl
  • 有没有办法用 FireMonkey 添加提示或工具提示?

    我已经搜索过但找不到任何东西 有没有办法用 FireMonkey 添加提示或工具提示 是否有可用的组件可以实现此目的 理想情况下 我正在寻找这样的东西 标注类型工具提示 对于搁置此问题的版主 我正在寻找有关如何实现此目标的源代码行 而不是购
  • jQuery 验证插件:如何强制验证以前有效的字段?

    我正在使用 jQuery 验证插件来验证表单 您知道如何强制重新验证吗以前成功过 fields 我已使用以下检查尝试了 form 函数 这是在用户单击 提交 后执行的 if form1 validate form false formVal
  • 如何将 SVG 对象插入到带有链接的 HTML 中?

    我不想添加到 svg 的链接 这是不可能的 因为 svg 不是我提供的 但想添加一个链接 例如 a href img src foo svg a 只是这一次不是img but a object 这样我就可以包含一个 svg 它适用于某些浏览
  • 如何让Jqgrid冻结列自动换行

    我正在使用最新的 jqgrid 包 4 4 5 我想让标题栏自动换行 我读了奥列格answer https stackoverflow com questions 8686616 how can i get jqgrid frozen co
  • Python BeautifulSoup:通配符属性/id搜索

    我有这个 dates soup findAll div id date 但是 我需要 id 作为通配符搜索 因为id can be date 1 date 2 etc 您可以提供可调用作为过滤器 dates soup findAll div
  • 如何访问 rowdatabound 上的 gridview 列?

    我想在值为 1 时将 gridview 列的值更改为活动状态 我有类似的 gridview 列
  • 为什么在类中实现的 C# 接口方法必须是公共的?

    我有一个继承接口的类 接口成员方法在我的类中实现 没有访问修饰符 因此 默认情况下它是 private 我收到错误 无法实现接口成员 因为它不是公共的 为什么不允许 我不能覆盖可访问性吗 这是一个例子why能够覆盖可见性是没有意义的 int
  • 在调整大小时保存 NSWindow 大小并为用户关闭

    我注意到 OS X 上的所有应用程序似乎都会保存您设置的大小 下次打开它时 它通常处于相同的位置和大小 我正在制作一个应用程序 我注意到调整大小后 如果我再次启动应用程序 它的大小只是我在 Xcode 4 的 IB 中设置的大小 而不是我在
  • 检查是否连接了打印机

    Windows 中有没有一种方法 在 Windows CE 中工作 来检查打印机是否已连接并与 C 中的 LPT1 进行通信 Edit 更多信息 我们目前正在使用通用 Windows CE 打印机驱动程序 pcl dll 通过将其传递到Cr
  • 将 Perfmon 分析解释为特定于应用程序的观察/数据的最佳方法是什么?

    我们很多人都使用过Perfmon工具来进行性能分析 特别是对于 Net 计数器 但 Perfmon 中存在太多变量 因此总是很难将 Perfmon 结果解释为有关我的应用程序的有价值的反馈 我想使用 perfmon 不是像蚂蚁分析器 htt
  • 如果我们是有效用户,我们可以克隆存储库吗?

    我是 Git 新手 所以如果这是一个愚蠢的问题 请原谅 在我们的组织中 我们使用 Git 作为存储库 我可以这样做git checkin checkout pull 从我的办公室机器 我们的 Git 存储库 URL 是这样的 但由于限制我无
  • 如何使 Flex Row 响应式 Bootstrap 4

    目前页面如下所示 现在 调整大小到移动屏幕时 弹性框会溢出容器 Html div class d flex flex row text white text center div class port item p 4 bg primary
  • 如何修改 C 程序以便 gprof 可以分析它?

    当我在我的 C 程序上运行 gprof 时 它说我的程序没有累积时间 并且所有函数调用都显示 0 时间 但是它确实对函数调用进行计数 如何修改我的程序 以便 gprof 能够计算某项运行所需的时间 编译的时候有没有指定 pg http so