我正在尝试为LibreOffice打印过程实现一些其他功能(一些特殊信息应自动添加到每个打印页面的空白处)。我正在将RHEL 6.4与LibreOffice 4.0.4和Gnome 2.28一起使用。
我的目的是研究LibreOffice和系统组件之间的数据流,并确定哪些源代码负责打印。之后,我将不得不修改这些代码部分。
现在,我需要有关源代码研究方法的建议。我发现了很多工具,从我的角度来看:
strace
似乎很低级;gprof
需要使用“ -pg” CFLAGS重新编译二进制文件;不知道如何使用LibreOffice;systemtap
只能探测系统调用,不是吗?callgrind
+Gprof2Dot
在一起表现很好,但结果却很奇怪(见下文);例如,这是可视化callgrind
输出的调用图Gprof2Dot
。我从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 Writer GUI应用程序(我用strace
和确定了它ps aux
)。我按下CTRL+P和OK按钮。然后,我关闭了该应用程序,希望看到负责日志打印过程初始化的功能。
该callgrind
输出用处理,Gprof2Dot
按照这个答案的工具。不幸的是,我既看不到我感兴趣的动作,也看不到调用图。
对于有关解决此类问题的正确方法的任何信息,我将不胜感激。谢谢。
解决此问题的正确方法是记住LibreOffice是开源的。完整的源代码已记录在案,您可以在docs.libreoffice.org上浏览文档。不要那样艰难:)
此外,请记住,打印机设置对话框不是特定于LibreOffice的,而是由OS提供的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句