我想實現一些額外的功能LibreOffice打印過程(一些特殊的信息應該自動添加到每個打印頁面的邊緣)。我使用的是RHEL 6.4和LibreOffice 4.0.4和Gnome 2.28。LibreOffice:確定源代碼部分負責打印
我的目的是研究LibreOffice和系統組件之間的數據流,並確定哪些源代碼負責打印。之後,我將不得不修改這些代碼部分。
現在我需要關於源代碼研究方法的建議。我發現了大量的工具,從我的角度來看:
strace
似乎是非常低級的;gprof
需要使用「-pg」重新編譯的二進制文件CFLAGS;不知道如何用LibreOffice做到這一點;systemtap
只能探測系統調用,不是嗎?callgrind
+Gprof2Dot
在一起很好,但執行奇怪的結果(見下文);
例如這裏是從與Gprof2Dot
可視化callgrind
輸出調用圖。我有這種命令啓動callgrind
:
valgrind --tool=callgrind --dump-instr=yes --simulate-cache=yes --collect-jumps=yes /usr/lib64/libreoffice/program/soffice --writer
和接收四個輸出文件:
-rw-------. 1 root root 0 Jan 9 21:04 callgrind.out.29808
-rw-------. 1 root root 427196 Jan 9 21:04 callgrind.out.29809
-rw-------. 1 root root 482134 Jan 9 21:04 callgrind.out.29811
-rw-------. 1 root root 521713 Jan 9 21:04 callgrind.out.29812
最後一個(PID 29812)對應於運行的LibreOffice作家GUI應用(與strace
確定它和ps aux
)。我按了CTRL + P和確定按鈕。然後我關閉了應用程序,希望看到在日誌中負責打印進程初始化的功能。
根據此答案,callgrind
輸出使用Gprof2Dot
工具進行處理。不幸的是,我不能在圖片上看到我感興趣的動作,也沒有看到通話圖。
我會很感激任何有關解決這個問題的正確方法。謝謝。