Distributions
› Ubuntu
› Fedora
› CentOS
中文资源站
› 网易开源镜像站
LuckyPocketWatch
V2EX  ›  Linux

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

  •  
  •   LuckyPocketWatch · Sep 11, 2023 · 2831 views
    This topic created in 1149 days ago, the information mentioned may be changed or developed.

    系统是 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 权限

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

    不太明白你说的有 sudo 密码没 root 权限是什么意思,只允许 sudo 切换到非特权用户?
    uprobe 目前应该还是要 root 权限。
    passive
    passive
    Sep 11, 2023 via Android❤️1
    7
    之前遇到过一次图形驱动没设置好,gui 库走 mesa 加载了 opencl 还是 cuda 的 so ,每次启动先检测硬件,超时了才继续。
    R4rvZ6agNVWr56V0
    R4rvZ6agNVWr56V0
    Sep 12, 2023
    8
    5 楼已经提及了,perf report
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1374 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 35ms · UTC 21:24 · PVG 05:24 · LAX 13:24 · JFK 16:24
    ♥ Do have faith in what you're doing.