文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>用strace排错

用strace排错

时间:2006-01-20  来源:nait

strace是一个很有用的工具,它不需要源码就可以对程序进行"调试"是程序员的好帮手.今天讲一个用strace进行排错的小例子:-)
我为gkrellm装了个xmms的插件,这样xmms就算集成到gkrellm里了,要听歌时只需用鼠标点两下gkrellm,不需要xmms的界面出来就可以听歌了,太方便了!
可是今天突然出问题了,我一点gkrellm加载xmms的按钮gkrellm就失去响应了,象死了一样. 真是奇怪,从来没遇到过这种奇怪的问题,gkrellm一阵很稳定的.
于是我把它给kill掉,然后从命令行启动gkrellm(issue gkrellm2 command),90%有问题的软件这样启动都可以从出错信息中找到解决的办法,这几乎成了我的必杀技了:D
可是想不到这次失灵了,命令敲完了,终端什么反应都没有,也不返回,更没有任何出错信息.
Ctrl-C终结了,试了下敲gkrellm(这是gtk1的版本),可以成功启动,没有任何问题,看来应该是xmms的问题了.
缩小包围圈,直接测试xmms.
在终端敲xmms,跟执行gkrellm2效果一样,没有任何反应.
正在焦头烂额之际,突然灵机一动,想到了被仍在角落很久的工具--strace
敲strace xmms xxx.mp3 果然出现了下面的输出(为了方便观看,略去了开始的不想关的信息):
............
........... lstat64("/home/leo/.kde3.4/share/config/gtkrc.zh_CN.gbk", 0xbff78300) = -1 ENOENT (No such file or directory)
lstat64("/home/leo/.kde3.4/share/config/gtkrc", {st_mode=S_IFREG|0644, st_size=1438, ...}) = 0
open("/home/leo/.kde3.4/share/config/gtkrc", O_RDONLY) = 4
read(4, "# created by KDE, \316\345 1\324\302 20 16:"..., 4000) = 1438
read(4, "", 4000) = 0
close(4) = 0
mkdir("/home/leo/.xmms", 0755) = -1 EEXIST (File exists)
mkdir("/home/leo/.xmms/Skins", 0755) = -1 EEXIST (File exists)
mkdir("/home/leo/.xmms/Plugins", 0755) = -1 EEXIST (File exists)
socket(PF_FILE, SOCK_STREAM, 0) = 4
socket(PF_FILE, SOCK_STREAM, 0) = 6
getuid32() = 1000
geteuid32() = 1000
setuid32(1000) = 0
setreuid32(1000, 1000) = 0
connect(6, {sa_family=AF_FILE, path="/tmp/xmms_leo.0"}, 110) = 0
write(6, "\1\0 \0\0\0\0\0", 8) = 8
read(6,
然后就一直停在这儿了,扫了一眼,发现了connect那行.我一拍脑袋,记起昨天在线听过歌,而今天不能上网了,xmms记住了昨天的状态了.要解决很简单,直接rm /tmp/xmms_leo.0,一切OK!
相关阅读 更多 +
排行榜 更多 +
阿克里危机手机版下载

阿克里危机手机版下载

飞行射击 下载
贪婪洞窟重生手游下载

贪婪洞窟重生手游下载

角色扮演 下载
贡贡托儿所手机版下载

贡贡托儿所手机版下载

休闲益智 下载