定位程序问题的方法 -- clwu

原本的标题的《定位程序代码的方法》,但问题有时候超出了自己代码的范围,而是别人的程序,所以今天想分享的是一个通用的分析问题(程序)的思路。

 

先来说一下在使用别人的程序(Vim)过程中遇到问题的一个例子。

 

某日,程序猿在Vim飞快地敲着键盘,突然在输入命令 :b 时软件没有响应,一直卡死。

程序猿A):直接Kill 了vim 这个进程,重新启动vim 算了。

程序猿B):我想知道它(vim程序)正在干嘛,这样我就知道它为什么卡了。

 

大部分人都是选择A,他们的理由是这不是主要的问题,工具可用(重启)就可以了,主要的工作还是在写自己的代码呀。人复一日,只低头看见自己那点代码,而没抬头见过世面,进步和觉悟可想而知了。

 

嗯,我们在聊聊B的思路。

我们需要借助 strace 工具来查看程序的运行状态,从下图可以看到 vim 一直在select 句柄 1(标准输入)等待用户的输入,知道这些,于是按下 Ctrl + C,vim 就不卡了。

 

 

在windows 和 OS X 、UNIX 下都有对应的工具,如sysintenals 套件、dtruct 等等。这些工具才能看到程序当前调用的API,打开的文件和端口 ...

 

大多数情况下,我们知道了程序调用的API就大概知道程序在干嘛了。

 

少数情况下我们需要才往下一点,动态调试程序的汇编指令,这个就不打算再深入了。

转载于:https://www.cnblogs.com/lihuobao/p/4898445.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值