如何使用jdb调试android的java程序
发布网友
发布时间:2022-04-22 06:23
我来回答
共1个回答
热心网友
时间:2023-10-02 17:03
1)下载jdbshell并编译
www.limodev.cn/blog/?dl_name=jdbshell.tar.gz
因为我基本上每次一开始都要执行threads变量,所以我在开始wile循环前加了一句话
else
{
close(parent_to_child[0]);
write(parent_to_child[1], "threads\n",strlen("threads\n"));
while(1)
{
int i = 0;
line = readline ("");
...
}
}
编译后将jdbshell放到~/bin,或者将目录加到PATH里
出现无法打开readline.h的话,安装libreadline6和libreadline6-dev
2)仿照gdbclient,在build/envsetup.sh中加入jdbclient函数
function jdbclient()
{
local MY_SRC_PATH="$1"
if [ "$MY_SRC_PATH" ] ; then
MY_SRC_PATH=$1
echo $MY_SRC_PATH
else
echo "ROOT" $OUR_ROOT
MY_SRC_PATH="app_process"
fi
local PORT="$2"
if [ "$PORT" ] ; then
PORT=$2
else
PORT=":9000"
fi
local PID
local PROG="$3"
if [ "$PROG" ] ; then
PID=`pid $3`
echo tcp$PORT jdwp$PID
adb forward "tcp$PORT" "jdwp:$PID"
echo jdbshell -sourcepath $MY_SRC_PATH -attach localhost$PORT
jdbshell -sourcepath $MY_SRC_PATH -attach localhost$PORT
sleep 2
else
echo ""
echo "please specify app you want to debug:"
echo ""
fi
}
3)启动android模拟器,运行浏览器
4)jdbclient packets/app/Browser/src/ :9000 browser
第一个参数是你要load进来的代码的地址,如果你要load多个代码(调试的时候可以看),可以
export DEBUG_SRC_PATH=
然后
jdbclient $DEBUG_SRC_PATH :9000 browser
第二个参数是attach端口,如果9000有在用,可以用其他端口
第三个参数是要调试的应用,脚本里面根据
pid browser来取得进程id,所以你要保证
adb shell ps |grep browser
能够看到对应的进程