V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
LuckyPocketWatch
V2EX  ›  Linux

Linux 程序启动缓慢,如何查看缓慢在那里?

  •  
  •   LuckyPocketWatch · 2023-09-11 21:12:50 +08:00 · 1856 次点击
    这是一个创建于 473 天前的主题,其中的信息可能已经有所发展或是发生改变。

    系统是 ubuntu,我用 C++写了一个程序

    int main(){
        std::cout<<get_current_time();  
        //do something..
        std::cout<<get_current_time();
        return 0;
    }
    

    编译的时候需要链接一些动态/静态库,然后运行的时候执行命令./T1,程序大约 10 秒后会打印

    11:58:43:389
    11:58:43:421
    

    我有没有办法知道,我输入./T1 命令到执行第一行代码 std::cout<<get_current_time();这段时间程序做了什么,有哪些步骤,每步耗时大概多少?

    我有 sudu 密码但没有 root 权限

    第 1 条附言  ·  2023-09-11 22:06:03 +08:00
    我链接的那些库是第三方的库而且是闭源的,只有.so 文件
    8 条回复    2023-09-12 02:57:27 +08:00
    yanqiyu
        1
    yanqiyu  
       2023-09-11 21:27:18 +08:00
    盲猜是你链接的库里面的全局/静态对象初始化的时间
    可以借助 gprof 这样的 profile 工具采样调查耗时
    或者-finstrument-functions 配合手写__cyg_profile_func_enter 以及__cyg_profile_func_exit 直接看每个函数的耗时(不知道有没有造好的轮子)
    Jirajine
        2
    Jirajine  
       2023-09-11 21:34:15 +08:00 via Android   ❤️ 2
    strace 和 gdb
    LindsayZhou
        3
    LindsayZhou  
       2023-09-11 22:45:32 +08:00
    uprobe
    LindsayZhou
        4
    LindsayZhou  
       2023-09-11 22:54:58 +08:00
    https://v2ex.com/t/953231

    不太明白你说的有 sudo 密码没 root 权限是什么意思,只允许 sudo 切换到非特权用户?
    uprobe 目前应该还是要 root 权限。
    eatgrass
        5
    eatgrass  
       2023-09-11 23:18:03 +08:00
    eatgrass
        6
    eatgrass  
       2023-09-11 23:19:50 +08:00
    passive
        7
    passive  
       2023-09-11 23:31:08 +08:00 via Android   ❤️ 1
    之前遇到过一次图形驱动没设置好,gui 库走 mesa 加载了 opencl 还是 cuda 的 so ,每次启动先检测硬件,超时了才继续。
    GeekGao
        8
    GeekGao  
       2023-09-12 02:57:27 +08:00
    5 楼已经提及了,perf report
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   945 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 20:58 · PVG 04:58 · LAX 12:58 · JFK 15:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.