系统是 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
yanqiyu 2023-09-11 21:27:18 +08:00
盲猜是你链接的库里面的全局/静态对象初始化的时间
可以借助 gprof 这样的 profile 工具采样调查耗时 或者-finstrument-functions 配合手写__cyg_profile_func_enter 以及__cyg_profile_func_exit 直接看每个函数的耗时(不知道有没有造好的轮子) |
2
Jirajine 2023-09-11 21:34:15 +08:00 via Android 2
strace 和 gdb
|
3
LindsayZhou 2023-09-11 22:45:32 +08:00
uprobe
|
4
LindsayZhou 2023-09-11 22:54:58 +08:00
|
5
eatgrass 2023-09-11 23:18:03 +08:00
|
6
eatgrass 2023-09-11 23:19:50 +08:00
|
7
passive 2023-09-11 23:31:08 +08:00 via Android 1
之前遇到过一次图形驱动没设置好,gui 库走 mesa 加载了 opencl 还是 cuda 的 so ,每次启动先检测硬件,超时了才继续。
|
8
GeekGao 2023-09-12 02:57:27 +08:00
5 楼已经提及了,perf report
|