楼主: 菩提祖师
收起左侧

[系统] Ubuntu有什么办法得知图形工具调用哪些命令,修改哪些配置文件?

[复制链接]
菩提祖师
 楼主| 发表于 2013-8-23 20:36:18 | 显示全部楼层
本帖最后由 菩提祖师 于 2013-8-24 21:45 编辑
thelord 发表于 2013-8-23 00:29
strace 的 -f / -F 选项支持跟踪子进程


试了试在跟踪图形终端进程,找free命令的文件位置,但在事先知道被调用程序名为"free"的情况下,才搜索到"29778 read(6, "free", 8184)             = 4"这样一个晦涩的信息,它并没有包含文件的路径,如果被调用的程序路径和名称未知,有什么办法?

2013年8月23日22时55分22秒补充:
如果仅仅获得一个文件名,还可以通过全盘搜索的方式来查找.
但是如果被调用程序的名称是未知的,无法从这种晦涩的信息发觉"这个字符串可能是被调用程序"
thelord
发表于 2013-8-25 00:54:56 | 显示全部楼层
菩提祖师 发表于 2013-8-23 20:36
试了试在跟踪图形终端进程,找free命令的文件位置,但在事先知道被调用程序名为"free"的情况下,才搜索到" ...

看不懂,图形进程为什么要调用外部free命令?为什么不直接系统调用?
strace 跟踪的都是系统调用
read(6, "free", 8184) = 4 意思是从文件6中读入了"free"字符串
参考:
5 simple ways to troubleshoot using Strace
菩提祖师
 楼主| 发表于 2013-8-25 01:23:34 | 显示全部楼层
本帖最后由 菩提祖师 于 2013-8-25 01:42 编辑
thelord 发表于 2013-8-25 00:54
看不懂,图形进程为什么要调用外部free命令?为什么不直接系统调用?
strace 跟踪的都是系统调用
read( ...


我执行的命令是free,free本身是系统中的一个程序,在Lubuntu中它位于"/usr/bin",类似于Windows中如果要运行一个命令,相应的path目录中的程序文件就会被运行.

我想知道图形界面都调用了哪些命令,可是按照您说的方法我无法跟踪到一个程序具体运行了哪些命令.

2013年8月25日01时24分00秒补充:
您提供的英文资料正在查看中.

2013年8月25日01时30分07秒补充:
没有很仔细的看,粗略查看(英文水平有限,完全仔细看完压力很大),感觉您提供的英文资料对我可能没有什么帮助.

2013年8月25日01时41分00秒补充:
阴差阳错的找到了这篇文章的中文译文版:http://blog.csdn.net/dlmu2001/article/details/8842891
看了看,没有解决我的疑惑,我想知道一个进程运行了哪些其它进程.
thelord
发表于 2013-8-25 02:13:06 | 显示全部楼层
菩提祖师 发表于 2013-8-25 01:23
我执行的命令是free,free本身是系统中的一个程序,在Lubuntu中它位于"/usr/bin",类似于Windows中如果要运 ...

“图形界面都调用了哪些命令”
1. 首先,图形工具进程通过调用外部程序(如 /usr/bin/free)来完成功能是少见的,一般调用api来实现,这里要区分开。有什么具体例子,图形工具会调用外部命令?
2. 图形工具修改了哪些文件,strace 应该可以追踪到,如 strace -e open,access 选项
菩提祖师
 楼主| 发表于 2013-8-25 03:03:53 | 显示全部楼层
thelord 发表于 2013-8-25 02:13
“图形界面都调用了哪些命令”
1. 首先,图形工具进程通过调用外部程序(如 /usr/bin/free)来完成功能是 ...


追踪文件,感觉应该不是问题了.
但是追踪调用的外部程序还是没有办法.
图形程序调用外部工具实现功能的例子有GNOME MPlayer(MPlayer的GUI前端) Code::Blocks (各种编译器(如GCC),调试器(如GDB)的GUI前端)

以上举例的图形工具中都会调用外部程序来实现相应的功能.
thelord
发表于 2013-8-25 14:08:34 | 显示全部楼层
菩提祖师 发表于 2013-8-25 03:03
追踪文件,感觉应该不是问题了.
但是追踪调用的外部程序还是没有办法.
图形程序调用外部工具实现功能的 ...

跟了下 gnome-mplayer
strace -f -o gm.trace gnome-mplayer

外部程序调用:grep exec gm.trace
文件:grep open gm.trace
菩提祖师
 楼主| 发表于 2013-8-25 18:27:36 | 显示全部楼层
thelord 发表于 2013-8-25 14:08
跟了下 gnome-mplayer
strace -f -o gm.trace gnome-mplayer


难道没有发现mplayer进程吗?
我仔细看了看,gonme-mplayer的确不是mplayer的父进程,但gonme-mplayer确实依赖mplayer进程,如果结束它就提示"MPlayer interrupted by signal 2 in module: sleep_timer",如果停止mplayer进程,gonme-mplayer的画面就卡住不动了.
mplayer的父进程ID是1,即init进程,不明白为什么.
通过任务管理器之类的工具可以查看这种固定的进程,但是如果进程是一启动就马上结束那种,任务管理器就恐怕看不到了,怎么办呢?
thelord
发表于 2013-8-25 19:53:27 | 显示全部楼层
菩提祖师 发表于 2013-8-25 18:27
难道没有发现mplayer进程吗?
我仔细看了看,gonme-mplayer的确不是mplayer的父进程,但gonme-mplayer确实 ...

我的意思是,gonme-mplayer确实调用了mplayer程序,通过下面的方法可以查看。短时间的调用也能看见
外部程序调用:grep exec gm.trace
文件:grep open gm.trace

评分

参与人数 1人气 +1 收起 理由
菩提祖师 + 1 感谢解答: )

查看全部评分

菩提祖师
 楼主| 发表于 2013-8-25 21:33:10 | 显示全部楼层
本帖最后由 菩提祖师 于 2013-8-25 22:04 编辑
thelord 发表于 2013-8-25 19:53
我的意思是,gonme-mplayer确实调用了mplayer程序,通过下面的方法可以查看。短时间的调用也能看见
外部 ...


可是我这里没有发现mplayer相关的内容.
mplayer全盘搜索如下:
./usr/share/bash-completion/completions/mplayer
./usr/bin/mplayer
监控到的内容没有发现上述字符串.

2013年8月25日21时41分34秒补充:
可能忽略了-f选项,正在重试...

2013年8月25日21时49分10秒补充:
确认是自己忽略了-f导致无法跟踪外部程序调用,但图形终端进程貌似仍然无法跟踪,也就是举例的那个free命令.
thelord
发表于 2013-8-25 23:18:43 | 显示全部楼层
菩提祖师 发表于 2013-8-25 21:33
可是我这里没有发现mplayer相关的内容.
mplayer全盘搜索如下:
./usr/share/bash-completion/completi ...

哪个图形进程在什么条件下会调用 free 命令?
您需要登录后才可以回帖 登录 | 快速注册

本版积分规则

手机版|杀毒软件|软件论坛| 卡饭论坛

Copyright © KaFan  KaFan.cn All Rights Reserved.

Powered by Discuz! X3.4( 沪ICP备2020031077号-2 ) GMT+8, 2025-1-14 20:12 , Processed in 0.084316 second(s), 15 queries .

卡饭网所发布的一切软件、样本、工具、文章等仅限用于学习和研究,不得将上述内容用于商业或者其他非法用途,否则产生的一切后果自负,本站信息来自网络,版权争议问题与本站无关,您必须在下载后的24小时之内从您的电脑中彻底删除上述信息,如有问题请通过邮件与我们联系。

快速回复 客服 返回顶部 返回列表