服務器程序編譯時加入 -pg 選項,程序長期運行不退出,運行結束後發現未生成 gmon.out 文件。
gprof 依賴程序正常退出時將分析數據寫入 gmon.out。長期運行的守護進程若不退出(或被強制殺死),緩衝區數據無法刷新,導致文件不生成。
perf record -p <pid> -g -- sleep 60。libprofiler.so,可通過環境變量 CPUPROFILE 動態開始/停止分析,適合長期服務。SIGUSR1),調用 ProfilerStop() 或手動寫入數據。生產環境長期服務首選 perf 或 gperftools,無需重新編譯,對性能影響極小。