首页
社区
课程
招聘
[求助]调试so,总是连不上
发表于: 2014-8-12 15:20 12955

[求助]调试so,总是连不上

2014-8-12 15:20
12955
以前都是正常,昨天开始使用 jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700这个命令就报错。报错提示
java.net.ConnectException: Connection refused: connect
        at java.net.PlainSocketImpl.socketConnect(Native Method)
        at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
        at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
        at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
        at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
        at java.net.Socket.connect(Socket.java:529)
        at com.sun.tools.jdi.SocketTransportService.attach(SocketTransportServi
e.java:204)
        at com.sun.tools.jdi.GenericAttachingConnector.attach(GenericAttachingC
nnector.java:98)
        at com.sun.tools.jdi.SocketAttachingConnector.attach(SocketAttachingCon
ector.java:72)
        at com.sun.tools.example.debug.tty.VMConnection.attachTarget(VMConnecti
n.java:358)
        at com.sun.tools.example.debug.tty.VMConnection.open(VMConnection.java:
68)
        at com.sun.tools.example.debug.tty.Env.init(Env.java:64)
        at com.sun.tools.example.debug.tty.TTY.main(TTY.java:1010)

哪位高手帮我解决下,网上找了很多都是没用的。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (14)
雪    币: 86
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
你把你附加的步骤详细说下,之前应该有adb forward操作,网上大部分说的附加的时候的都是用的com.sun.jdi.SocketAttach连接器表示以客户端方式启动调试器,SocketListen为以服务端方式启动调试器,jdb connectors命令能列出所有可用的连接器,根据需求使用。
2014-8-12 15:31
0
雪    币: 205
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
我的步骤这样
1.首先把android_server push到模拟器
2.chmod 777 *并运行./android_server
3.adb forward tcp
4.adb install test.apk
5.adb am start -D -n 包/主类
6.jdb附加
然后就提示上述错误。
我还换过顺序试过,先IDA附加进程,并运行jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700.还是相同错误。
但是打开DDMS再运行JDB会跳过调试,APK直接运行起来了
2014-8-12 15:39
0
雪    币: 86
活跃值: (25)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
前面对于android_server的操作是多余的!jdb不需要额外的server端支持,
adb am start -D -n 包/主类
adb shell ps | grep "包名"
adb -d forward tcp:8700 jdwp:进程号
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8700
一般是这个操作
2014-8-12 16:28
0
雪    币: 205
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
sorry,昨天工作忙没时间回复,
是这样的,android_server不是多余的,我昨天少说了些步骤,JDB ATTACH成功后用IDA来调试。以前一直是这么做的(可以看下这篇文章,http://www.blogbus.com/riusksk-logs/271566148.html)。
然后试过你说的方法,adb -d forward tcp:8700 jdwp:16035时
也是报错,error: cannot bind to socket。
现在需要调试so,很郁闷
2014-8-15 13:52
0
雪    币: 18
活跃值: (430)
能力值: ( LV4,RANK:40 )
在线值:
发帖
回帖
粉丝
6
不要8700  看ddms具体端口
2014-8-15 18:23
0
雪    币: 53
活跃值: (280)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
adb jdwp 先看看有没有相应的pid

adb forward tcp:8000 jdwp:xxx
jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8000
2014-8-18 10:08
0
雪    币: 507
活跃值: (130)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
你先看看手机是否支持jdb调试,输入adb jdwp ,看是否有返回进程。
如果是上述情况,那么需要手机里面的ro.debuggable属性设置为1也就是true。
2014-8-18 15:35
0
雪    币: 18
活跃值: (15)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
调试java:打开DDMS,点击需要调试的进程,然后再用jdb命令试试
调试so:需要使用IDA,而不是jdb,so是arm指令和java没关系
2014-8-18 17:06
0
雪    币: 205
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
问题解决了!
谢谢大家的帮助。
我是这样最终解决的。
原来ida6.1对于andorid so调试不稳定,有朋友推荐,使用最近刚i出的6.5版本(感兴趣的童鞋可以看这里http://www.52pojie.cn/thread-284145-1-1.html),问题完美解决。
2014-8-19 17:46
0
雪    币: 970
活跃值: (1264)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
亲 可以jdb调试 我也遇到同样问题了 还有其他解决办法吗

我在想是不是有反调试呢 应为我调试其他apk至少jdb是可以链接上的 目前的apk是无法连接的
2016-1-27 18:10
0
雪    币: 970
活跃值: (1264)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
jdb无法链接 似乎和ida版本没有多大关系
2016-1-27 18:11
0
雪    币: 220
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
13
这个和ida的版本有关系吗
2020-1-17 13:18
0
雪    币: 582
活跃值: (317)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
jdb是jdb IDA是IDA...
2020-1-17 20:25
0
雪    币: 10945
活跃值: (7334)
能力值: ( LV12,RANK:219 )
在线值:
发帖
回帖
粉丝
15
 jdb -connect com.sun.jdi.SocketAttach:hostname=localhost,port=8700 这个“8700” 应该对应实际预调试的端口 
2020-1-19 09:59
0
游客
登录 | 注册 方可回帖
返回
//