列出能dump的service:
service list
dumpsys某一个service
dumpsys
dumpsys connectivity
dumpsys信息的实现在对应service中,如dumpsys connectivity,输出信息由ConnectivityService类的dump实现。
需要增加调试信息时,也可以在dump中加入相关的信息,这样在dumpsys时就可以输出。
android\frameworks\base\services\core\java\com\android\server\ConnectivityService.java
@Override
protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
final IndentingPrintWriter pw = new IndentingPrintWriter(writer, " ");
if (mContext.checkCallingOrSelfPermission(
android.Manifest.permission.DUMP)
!= PackageManager.PERMISSION_GRANTED) {
pw.println("Permission Denial: can't dump ConnectivityService " +
"from from pid=" + Binder.getCallingPid() + ", uid=" +
Binder.getCallingUid());
return;
}
pw.println("NetworkFactories for:");
pw.increaseIndent();
for (NetworkFactoryInfo nfi : mNetworkFactoryInfos.values()) {
pw.println(nfi.name);
}
pw.decreaseIndent();
pw.println();
NetworkAgentInfo defaultNai = mNetworkForRequestId.get(mDefaultRequest.requestId);
pw.print("Active default network: ");
if (defaultNai == null) {
pw.println("none");
} else {
pw.println(defaultNai.network.netId);
}
pw.println();
pw.println("Current Networks:");
pw.increaseIndent();
for (NetworkAgentInfo nai : mNetworkAgentInfos.values()) {
pw.println(nai.toString());
pw.increaseIndent();
pw.println("Requests:");
pw.increaseIndent();
for (int i = 0; i < nai.networkRequests.size(); i++) {
pw.println(nai.networkRequests.valueAt(i).toString());
}
pw.decreaseIndent();
pw.println("Lingered:");
pw.increaseIndent();
for (NetworkRequest nr : nai.networkLingered) pw.println(nr.toString());
pw.decreaseIndent();
pw.decreaseIndent();
}
pw.decreaseIndent();
pw.println();
pw.println("Network Requests:");
pw.increaseIndent();
for (NetworkRequestInfo nri : mNetworkRequests.values()) {
pw.println(nri.toString());
}
pw.println();
pw.decreaseIndent();
pw.println("mLegacyTypeTracker:");
pw.increaseIndent();
mLegacyTypeTracker.dump(pw);
pw.decreaseIndent();
pw.println();
synchronized (this) {
pw.println("NetworkTransitionWakeLock is currently " +
(mNetTransitionWakeLock.isHeld() ? "" : "not ") + "held.");
pw.println("It was last requested for "+mNetTransitionWakeLockCausedBy);
}
pw.println();
mTethering.dump(fd, pw, args);
if (mInetLog != null) {
pw.println();
pw.println("Inet condition reports:");
pw.increaseIndent();
for(int i = 0; i < mInetLog.size(); i++) {
pw.println(mInetLog.get(i));
}
pw.decreaseIndent();
}
}