ADB的server源码中处理devices命令的部分在哪里?

我查看ADB源码关于处理adb devices命令的流程。发现是client给server发了条消息,内容类似于host:devices。然后接听回来的消息。但是我没找到server中处理devices命令的代码。你知道这段代码在哪里吗?不胜感谢!对了,我说的是Linux版,不是Windows版。

1个回答

在函数里面:
int handle_host_request(char service, transport_type ttype, char serial, int reply_fd, asocket *s)
处理devices命令的代码:
// return a list of all connected devices
if (!strncmp(service, "devices", 7)) {
bool long_listing = (strcmp(service+7, "-l") == 0);
if (long_listing || service[7] == 0) {
D("Getting device list...\n");
std::string device_list = list_transports(long_listing);
D("Sending device list...\n");
SendOkay(reply_fd);
SendProtocolString(reply_fd, device_list);
return 0;
}
return 1;
}

给你打个调用栈:

#0 handle_host_request (service=0x5555556b8389 "devices", ttype=kTransportAny, serial=0x0, reply_fd=9, s=0x5555556b8020) at system/core/adb/adb.cpp:801
#1 0x000055555558598c in smart_socket_enqueue (s=0x5555556b8020, p=) at system/core/adb/sockets.cpp:771
#2 0x000055555558411f in local_socket_event_func (fd=, ev=1, _s=0x5555556b7f80) at system/core/adb/sockets.cpp:362
#3 0x000055555558c1d4 in fdevent_call_fdfunc (fde=) at system/core/adb/fdevent.cpp:510
#4 fdevent_loop () at system/core/adb/fdevent.cpp:692
#5 0x0000555555574225 in adb_main (is_daemon=, server_port=) at system/core/adb/adb_main.cpp:343
#6 0x0000555555574e35 in adb_commandline (argc=, argv=) at system/core/adb/commandline.cpp:1076
#7 0x00007ffff6ee6830 in __libc_start_main (main=0x555555574320 , argc=5, argv=0x7fffffffd838, init=, fini=,
rtld_fini=, stack_end=0x7fffffffd828) at ../csu/libc-start.c:291
#8 0x0000555555573c59 in _start ()

!!!!望采纳!!!!

nust20
nust20 回复humble_programmer: 对,就是用gdb。
接近 2 年之前 回复
humble_programmer
humble_programmer 请问调用栈是用什么程序打印出来的?gdb?
接近 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
ADB 源码分析
ADB 源码分析(一) ——ADB模块简述 已有 3049 次阅读2013-9-6 11:24 |个人分类:adb源码分析|系统分类:Android开发 ADB源码分析(一)——ADB模块简述 1、Adb 源码路径(system/core/adb)。 2、要想很快的了解一个模块的基本情况,最直接的就是查看该模块的Android.mk文件,下面
android adb源码分析(5)
本篇以“adb devices"命令为例,跟踪代码的执行流程。(1) main()->(2)adb_commandline()->adb_commandline()中的相关源码: if(!strcmp(argv[0], "devices")) { char *tmp; char *listopt; if (argc < 2)
ADB命令汇总,比如adb devices之类的
http://www.cnblogs.com/wysk/p/7417122.html 1、ADB是什么? ADB,即Android Debug Bridge,它是Android提供的一个通用的条数工具。借助这个工具可以很好的调试开发程序。它是客户端/服务端架构的命令工具,主要分三个部分: (1)adb客户端:一个在开发程序的电脑上运行的客户端 (2)ad
adb命令之 adb devices
1.adb devices 命令会列出当前和计算机链接的Android 设备或者 模拟器 2.如果Android 设备和PC想链接之后,通过adb devices命令查看到的设备后面有个“offline” 或者 “ promission denyed ..”等。   这个时候要修改PC的adb 配置,具体做法请参考我的博客: adb 终极解决
Android里面adb里面的两个命令adb kill-server adb start-server
adb kill-server adb start-server这两个很有意思,虽然我不知道他的作用是什么,但是他们的确是可以执行的,kill 后远程主机提示关闭,start后 又好了,很有意思,虽然不知道能解决什么问题!!
adb连接设备,提示adb server is out of date和 list of devices attached
在cmd中运行adb devices ,提示adb server is out of date 。killing… 百度了一下,是端口被占用了。参考https://blog.csdn.net/liranke/article/details/42524851 查看到,占用的进程为adb.exe。这不就是自己么。。。 尝试着在进程里手动kill掉adb.exe,再次输入adb devices,...
ADB不是内部或外部命令解决方法
安装Android SDK以后,在CMD中运行adb命令提示:adb不是内部或外部命令,也不是可运行的程序或批量文件。出现此问题是因为未设置adb的相关环境变量,或环境变量设置错误。知道了原因,解决起来就简单了。 依次打开我的电脑-属性-高级-环境变量,在系统变量中找到变量path双击打开,并在末尾添加以下内容: ;D:\Android\android-sdk\platform-tools
cmd中使用adb devices命令无法看到连接的设备解决办法
cmd中使用adb devices命令无法看到连接的设备解决办法
menuconfig 配置选项详解
转自:http://www.blog.chinaunix.net/uid-15887868-id-2758315.html在menuconfig中配置:详细介绍内核配置选项及删改情况第一部分:全部删除Code maturity level options ---&amp;gt; 代码成熟等级选项[]Prompt for development and/or incomplete code/drivers ...
如何查看Android应用使用的电量
http://androidren.com/index.php?qa=326&qa_1=%E5%A6%82%E4%BD%95%E6%9F%A5%E7%9C%8Bandroid%E5%BA%94%E7%94%A8%E4%BD%BF%E7%94%A8%E7%9A%84%E7%94%B5%E9%87%8F 简单的来说就是在电脑终端上输入下面的命令: https://githu
android adb devices 后出现offline问题的解决
android在使用adb 命令时有时会发现设备的状态是offline,我的神呀,这怎么让我们调试呢。必须解决这个问题。 解决方式如下: 以下方法请确保你的设备处于调试模式下。 方法一:执行 #adb kill-server                         #adb start-server                        #adb devices 看
手动修改adb devices的设备ID号
测试过程中连接多台设备时,使用adb devices命令有可能出现多台设备的ID都是一样的,那我们该怎么办呢? 下面介绍两种方法(需要有root权限): 方法一: 1、通过adb pull 将/data/usb_serial_num.txt从手机中拖到PC中,然后修改其中对应的数字; 2、将修改后的usb_serial_num.txt文件再通过adb push 将该文件放入到手机/
ubuntu下 adb devices找不到devices
ubunut下,adb devices 找不到设备
adb devices 检测不到真机问题的解决方案
在Android开发过程中我们经常要用到真机调试;但是在命令模式下输入adb devices 提示 " Can not find devices", 我们要怎么解决呢? 1. 插拔USB重试 2.手机关机重启 3. 插上USB后,重新装一下驱动,ADB驱动 4. 关掉电脑上360手机助手,安全卫士之类的 5. windows进程下关掉adb.exe; 关掉eclipse重试 6
ADB结构及代码分析
最近因为需要,看了下adb的源代码,感觉这个作者很牛,设计的很好,于是稍微做了点笔记,方便以后再次需要修改adb时能迅速的回忆起来。 ADB结构及代码分析 一、概述   Android的整个ADB由3个部分组成,ADB Client、ADB Server、ADB Daemon(ADBD)。其中ADB Server是作为一个后台服务在运行的,当输入ADB指令时(比如adb
关于adb devices出现的问题总结
WINDOWS 关于adb devices无法找到设备有以下几种解决方案: 1、先adb kill-server,再adb start-server    2、出现如下问题 (1) netstat -aon|findstr "5037"  先查找5037端口被什么进程占用 (2) tasklist|findstr "2748"     2048指占用的进
解决adb端口被占问题的几种方法总结
解决adb端口被占问题的几种方法: 一、查找占用程序然后关掉,再打开adb.exe即可。 1、CMD命令窗口输入:adbnodaemon server 。然后就会提示你哪个端口被占用了。 2、输入netstat -ano | findstr "5037" 。然后会弹出提示告诉你哪些进程占用了该端口,记住非0地址的后面的数字 3、打开任务管理器,点击“进程“,
ADB server didn't ack问题解决方法(ADB连接问题)
相信很多安卓开发的工程师都遇到过这个问题,网上的解决方法有很多,端口被占用这个原因估计是大部分出现这种情况的原因,我没有试过别的方法,只是将占用端口的进程杀死然后重启adb和eclipse,下面是具体的操作步骤: 第一步:先尝试一下进入DDMS的Device中重置adb,或许能一步到位,直接解决了这个问题,Eclipse很好找到DDMS,在此就不再赘述,如果是Android Studio,DDM
adb不是内部命令 --windows系统
1、配置环境变量:SDK_HOME 入口:计算机图标右键菜单中→属性→高级系统设置→高级→环境变量(不知道可另百度)。这里会有两个变量,一个是用户变量(表示对指定用户有效)、一个是系统变量(表示对所有用户有效)。这里我们都在系统变量中新建。 新建,变量名:” SDK_HOME“,变量值:D:\software\sdk(此处根据自己sdk目录进行更改) 2、在系统变量中找到Path,选中,然后点
Android adb原理与命令简介
android adb原理简介 adb常用命令 ADB 原理简介adb(Android debug bridge),意为调试Android设备的桥梁,可以管理、调试Emulator(模拟机)或Device(安卓真机)。
ADB Devices 代码实现获取手机序列号
资源包含头文件adb_api.h //有手动修改 静态库AdbWinApi.lib 以及代码实现部分
完美解决Genymotion无法使用adb命令的问题
我在运行Genymotion虚拟机进行android应用调试的时候,无法用Powershell(cmd)进入adb shell,显示的界面是这样的:          或者是这样的--->          导致无法正常进行adb调试,找了很多方法都没用,后来修改了genymotion中的settings 中的ADB选项中的SDK路径,保持跟你当前应用的eclipse或者android
mac adb 找不到设备
1. 打开终端,输入:system_profiler SPUSBDataType,查看Mac系统所有USB设备信息,找到相应的厂商Vender ID。 查到相应连有Android手机设备的usb hub,找到相应的厂商Vender ID,比如,我的测试机K-Touch T619天语手机就无法连接adb,查到的相应信息片段如下: [java] view pla
Ubuntu下 解决adb server is out of date. killing... ADB server didn't ACK
使用adb时, 越来越多的人出现了 adb devices 命令长时间无响应、adb start-server 失败、eclipse adt初始化时卡在dbms-init上等现象。 它们的根本原因均在于,adb server所使用的5037号端口被占用。 一种常见的解决方法是:找出占用5037端口的程序,然后杀掉它。 使用:netstat -aon | grep "5037" 来
adb server is out of date. killing完美解决
今天,久未出现的著名的“adb server is out of date.  killing”又发生了,在此,将解决方法记下,以便日后查看。 1. 错误信息: C:\Users\lizy>adb devices adb devicesadb server is out of date.  killing... ADB server didn't ACK* failed to st
使用adb出现的问题汇总
(1)查询当前设备          在输入命令行 adb start -server (启动adb 服务)                       adb devices (查询当前模拟器/设备的实例)         之后出现如下问题:         admin@admin-OptiPlex-380:~/freescale/R9.2/out/host/linux-x86/bi
解决手机unauthorized错误
手机:SHV-E210S(OS: Android 4.3) 手机开发者选项中USB调试已经打开,在电脑命令行下输入adb devices,显示手机未认证 D:\develop\androidroot\adt-bundle-windows-x86-20131030\sdk\platform-tools>adb devices * daemon not running. starting it
关于使用Genymotion 出现 ADB server didn’t ACK failed to start daemon 错误
下面是我的错误信息Genymotion: Starting device Google Nexus 4 - 4.3 - API 18 - 768x1280 下午1:18:21 Genymotion: Device [Google Nexus 4 - 4.3 - API 18 - 768x1280]: started 下午1:18:59 error: could not install *smarts
adb代码实现及debug
adb代码实现及debug
夜神模拟器无法使用adb命令提示adb server version 31 doesn't match
夜神android模拟器无法使用sdk内部自带的adb 除非版本相同 如果产生这样的错的话我们需要使用 首先定位到夜神模拟器的安装目录 使用nox_adb connect 127.0.0.1:62001然后把所有adb命令改为nox_adb 比如adb shell monkey 1000改为nox_adb shell monkey 1000就可以了当然必须要在安装目录下 或者我们把安装目录
Adb大全|基本用法|设备连接管理
基本用法 命令语法 为命令指定目标设备 启动/停止 查看 adb 版本 以 root 权限运行 adbd 指定 adb server 的网络端口 设备连接管理 查询已连接设备/模拟器 USB 连接 无线连接(需要借助 USB 线) 无线连接(无需借助 USB 线) 基本用法 命令语法 adb 命
adb 使用常见问题解决方案与adb的常见使用
adb 使用常见问题解决方案与ADB的常见使用几次遇到这个问题:The connection to adb is down, and a severe error has occured.You must restart adb and Eclipse.Please ensure that adb is correctly located at 'E:\setups\android\android-
adb不是内部命令和sudo: adb: command not found
linux ubuntu系统下,adb不是内部命令 解决方法: 1、sudo gedit ~/.bashrc 2、将下面的两句加到上面打开的文件里 export ANDROID_HOME=/home/jiandan/soft_dev/android-sdk-linux_86 export PATH=$PATH:$ANDROID_HOME/platform-tools 最新的SDK要改为:$PATH:$ANDROID_HOME/platform-tools 注意:“/home/jiandan/s
模拟器没有在adb devices中显示
手机usb调试模式打开试下以下两个命令 adb kill-server adb start-server
解决mac下adb无法找到手机
版权声明:本文为博主原创文章,未经博主允许不得转载。第一步: 查看usb设备信息 在 终端输入:system_profiler SPUSBDataType 可以查看连接的usb设备的信息 比如我的usb信息如下(部分内容):查看到我的android手机的Vendor ID: 0x04e8,这个id是该手机关联该电脑的一个唯一标识。第二步: 创建、修改adb_usb.ini文件 输入:
adb devices后只显示“List of devices attached”,首先要确认硬件安装是否成功。
C:\Program Files (x86)\Android\android-sdk\platform-tools>adb devices List of devices attached  adb devices后只显示“List of devices attached”,不罗列设备,确定usb已经连上。 硬件问题:确人手机的usb接入方式为:RNDIS(USB Ethernet)
Windows和Mac下adb找不到设备的解决方法
要使电脑和手机进行连接,我们一般都需要 1.给电脑安装手机USB驱动,为了检查驱动安装成功之后,检查电脑和手机连接状况。2.下载adb检查工具。 当我们输入命令 adb devices进行验证的时候,扫描不到任务设备。 出现这种情况主要是因为adb内建有一个知名的厂商ID列表,对于列表内的设备,adb可以直接连接,而不在列表中的设备,则不好意思,它会直接返回,这也就是为什么android设
使用adb时出现“adb.exe 已停止工作”或者“adb devices”没有设备出现
1.关于停止工作,可以先考虑重启服务先输入结束adb的命令:adb kill-server然后再输入开启adb的命令:adb start-server出现successful就重启成功了2.关于设备列表无设备,首先也是考虑重启服务3.看是否是其它应用占用了端口,大家应该看看是不是360等其它应用占用了,我关掉了360问题就解决啦4.这个是自己探索发现的,应该能应对大多奇奇怪怪的找不到解决办法的问题...
Python调用adb命令实现对多台设备同时进行reboot
Python调用adb命令实现对多台设备同时进行reboot 首先,adb实现对设备的reboot命令是:adb reboot . 但是如果是两台/多台设备的时候,需要声明serial number: adb -s serial_no reboot. 那么,如何用python实现对多台设备进行adb操作呢(reboot)? 这里涉及到 python 下 subprocess
几行命令解决adb无法连接Android手机的问题
[原创]几行命令解决adb无法连接Android手机的问题 环境:MAC系统,其它OS类似的处理 前言:最近偶尔出现Android Studio,Eclipse 都无法连接小米4手机进行真机调试,查看了网络上的方法,仍无法解决。后来发现应该是MAC系统将adb加入了自动启动异常所致,删掉自启动进程,重启adb server可以解决。
下载安装adb(菜鸟)并安装.apk:出现错误 List of devices attached,*damon not running,starting it now on port 5037*...
error device unauthorized 安装步骤: 1 下载个adb软件,有空上传到百度云 2 我这里只是下载了adb的安装包,解压后,将adb.exe 和adbWinApi.dll两个文件放到系统盘中, window/system32中 3 USB连接安卓手机,打开设备管理器,右键-我的电脑-管理-设备管理器,出现 4 出现后说明驱动安装好了,cmd进入解压命
Linux下adb devices找不到设备解决方法
ubuntu下USB连接Android手机后,使用adb devices 出现如下: List of devices attached ???????????? no permissions 或者List of devices attached 解决方法: 1.$lsusb Bus 002 Device 003: ID 413c:2107 Dell Computer C
adb devices 返回 XXX offline 的解决办法
设备: mac pro 8G 256SSD, moto X, genymotion今天打开电脑,在 android studio 的 android monitor 中查看,moto x 和 genymotion 都显示 XXX offline 状态,在终端中输入 adb devices 返回 各个 device 的状态也是 offline。解决办法如下: moto x 拨掉 usb 线后重新连接;
修改adb devices列表中设备串号名称
在adb devices列表中的devices name 或使用 adb get-serialno得到的串口名称 修改文件:
adb shell 如何选择特定的设备?
开篇手机冲着电,开着安卓模拟器,想给模拟器发送命令,怎么办呢?怎么办呢?解决之法其实这个一查,stackoverflow或者百度谷歌一大把,比如这个“http://stackoverflow.com/questions/14654718/how-to-use-adb-shell-when-multiple-devices-are-connected-fails-with-error-mor”,不过呢
DDMS中看不到Devices的解决办法
选择reset adb 该按钮在DDMS窗口下,右上角的倒三角符号,点开后在弹出的菜单中选择“reset adb”
adb devices找不到设备的解决方案
方案一:一般是由没有驱动导致的,所以可以先检查一下驱动是否安装,我自己的驱动未安装,是按照方案三解决的。 方案二:一般像一些助手之类的,他们也是直接调用的adb,或者对adb进行的改写,所以先将一些助手给关掉吧,像PP助手这么流氓的,直接卸载得了,关掉pp助手,他的pp连接助手打开,关掉连接助手,pp助手就打开,搞一个双检查防止杀进程啊。 方案三:这个是主要要说的,在C:\Users\用户名\
adb shell 选择指定设备 的脚本
问题: 电脑连接两台以上的android 设备时 adb shell 会返回 more than one device 解决方法: Step1.获取设备列表 adb device 返回: List of devices attached 87381d28093700000000 device yasudyasadasdasdasda devic...
解决魅族机器adb找不到设备
魅族近期的几款机型都有这个问题, 比如MX4, 魅蓝. 开启了usb调试模式, 但是执行adb devices找不到设备. 解决办法: 在C:\Users\<用户名>\.android\adb_usb.ini中添加一行0x2a45然后在cmd中执行adb kill-server adb devices就可以看到设备了.
ubuntu14.04下adb devices找不到设备
adb devices
相关热词 c# plc s1200 c#里氏转换原则 c# 主界面 c# do loop c#存为组套 模板 c# 停掉协程 c# rgb 读取图片 c# 图片颜色调整 最快 c#多张图片上传 c#密封类与密封方法
立即提问