DDMS之threads

Android线程状态解析

ID:   虚拟机分配的唯一的线程ID,在Dalvik里,它们是从3开始的奇数。 
Tid:linux的线程ID号 
Stauts:线程状态,比较多,有下面的一些 
             running:  正在执行程序代码 
             sleeping:执行了Thread.sleep() 
             monitor:等待接受一个监听锁。 
             wait::Object.wait(),等待被其他线程唤醒 
             native:正在执行native代码, 
             vmwait:等待虚拟机,(这个不是很懂,高手指教,这个状态在什么情况下发生) 
             zombie:线程在垂死的进程 
             init:线程在初始化(我们不可能看到) 
             starting:线程正在启动(我们不可能看到) 
utime:执行用户代码的累计时间 
stime:执行系统代码的累计时间 
name:线程的名字

 

右侧每个Thread选中之后可以在下面看到Refresh按钮,这个点了之后,可以看到线程的函数执行,结合Status可以知道目前情况;而出现问题时某个线程一般会变为monitor状态,这时候就要特别留意他,并refresh下,检查他的执行情况 ,再回头结合代码,一般都能找到问题出在什么地方;

### DDMS 工具的使用方法 #### 什么是DDMSDDMSDalvik Debug Monitor Service 的缩写,是一种用于调试 Android 应用程序的强大工具。它可以实现 IDE 与连接终端设备之间的交互,支持查询设备运行状态、进程状态、线程状态、文件系统以及日志信息等功能[^3]。 --- #### 启动DDMS 可以通过两种方式启动 DDMS: 1. **通过 Android Studio** 打开 Android Studio 并进入 `Tools -> Device File Explorer` 或者直接打开内置的 Logcat 面板,这些功能实际上是基于 DDMS 实现的。 2. **独立运行 DDMS** 在 SDK tools 目录下找到 `ddms.bat` 文件并双击运行,或者在命令行输入 `ddms` 来启动。 --- #### 主要功能模块及其使用方法 ##### 1. 设备管理 - 当设备或模拟器连接成功后,DDMS 会自动检测到它们,并显示在左侧列表中。 - 如果有多个设备连接,可以选择其中一个作为当前调试的目标设备。 ##### 2. 进程监控 - **查看进程**:右侧窗口会列出所有正在运行的应用程序及其对应的 PID (Process ID)[^2]。 - **终止进程**:选中某个应用程序后点击顶部菜单栏上的 “停止按钮”,即可强制关闭该应用。 ##### 3. 日志查看 (`Logcat`) - 提供实时的日志流输出,方便开发者跟踪程序执行过程中的各种事件。 - 支持按标签过滤日志内容,便于聚焦于特定类型的日志消息[^5]。 ##### 4. 线程分析 - 切换至 Threads 标签页可以看到选定进程中所有的线程详情,包括名称、优先级和堆栈轨迹等信息。 - 对多线程编程非常有用,能够帮助识别死锁或其他并发问题。 ##### 5. 内存监测 - Memory 标签下展示了当前所选应用占用的内存大小变化趋势图。 - 用户可以手动触发垃圾回收操作(GC),观察其效果;也可以导出 HPROF 文件进一步深入剖析内存泄漏等问题。 ##### 6. 文件传输 - Files Tab 中列出了目标设备内部存储结构目录树形视图。 - 允许上传本地电脑里的资源到手机端指定位置,同时也允许下载远程数据回来保存备用。 ##### 7. 地理位置模拟 - Location 控件让用户轻松设置虚拟 GPS 坐标点给测试环境下的地图类软件做验证用途。 ##### 8. 截屏抓取(Screen Capture) - 单击 Camera 图标即刻获取屏幕快照图像预览,适合用来记录界面UI设计稿或是错误场景截图留证。 ##### 9. 模拟来电/短信(Send SMS & Call) - Emulator Control Section 下方提供了两个选项卡分别对应发送短信息服务和拨号通话请求的功能模拟。 --- #### 注意事项 虽然传统意义上的独立版本 DDMS 功能强大,但在最新版 Android Studio 中已经被更现代化的替代品取代——Monitor 工具集成了更多高级特性如网络流量统计、GPU 性能指标采集等等。因此建议尽可能依赖集成开发环境中自带的相关插件来进行日常维护工作。 --- ### 示例代码片段 以下是利用 ADB 命令配合 DDMS 获取某 APP 的 CPU 使用率的一个例子: ```bash # 查找目标包名对应的 pid adb shell ps | grep com.example.appname # 开始采样 cpu 数据 adb shell top -b -n 1 | findstr <pid> ``` 上述脚本适用于批量处理大批量样本时自动化程度较高的场合。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值