当前位置: 首页 > news >正文

jdb调试问题集锦

https://bbs.kanxue.com/thread-210049.htm蓝铁

  1 2017-8-25 19:40

  4 楼 

 0

根据提示,可知,出错的地方是,android.app.ActivityThread.handleBindApplication(),  行=4,400
查看源码可以发现,代码中指向的是app.onCreate()
                        try  {
                                mInstrumentation.callApplicationOnCreate(app);//内部调用的是app.onCreate()

                        }  catch  (Exception  e)  {
                                if  (!mInstrumentation.onException(app,  e))  {
                                        throw  new  RuntimeException(
                                                "Unable  to  create  application  "  +  app.getClass().getName()
                                                +  ":  "  +  e.toString(),  e);
                                }
                        }

出现这个错误的原因是其在Java层调用了Debug.  isDebuggerConnected
native层调用的是Dalvik_dalvik_system_VMDebug_isDebuggerConnected
最底层是dvmDbgIsDebuggerConnected
函数内部是判断的gDvm.debuggerActive

解决方案就是,在jdb连接之后,在patch  dvmDbgIsDebuggerConnected函数

我正在使用 jdb dubugger,它的问题是在每个捕获的异常上停止,尽管我没有执行任何 catch .... 语句。在类加载期间,有数百个:

发生异常:java.io.FileNotFoundException (uncaught)"thread=Thread-2-EmulatorEngine", sun.misc.URLClassPath$JarLoader.ensureOpen(), line=634 bci=30

有什么方法可以指示 jdb 跳过这些异常吗?

附注。我听说过 IDE 编辑器。有理由使用jdb。

我意识到我不够小心。JDB 在启动这些行后写入

设置未捕获的 java.lang.Throwable

设置延迟未捕获的 java.lang.Throwable

所以,要禁用它,我需要输入一个命令

ignore uncaught java.lang.Throwable

jdb 调试

C:\Users\Reverse>adb shell am start -D -n lwf.lc.pncdd/lwf.lc.pncdd.MainC

查看内存情况:

cat /proc/N/maps

jdb调试目标进程

C:\Users\Reverse>adb jdwp 查看目标进程PID

C:\Users\Reverse>adb forward tcp:9999 jdwp:PID 转发

C:\Users\Reverse>jdb -connect com.sun.jdi.SocketAttach:port=9999,hostname=localhost
设置未捕获的java.lang.Throwable
设置延迟的未捕获的java.lang.Throwable

正在初始化jdb...
> exit

jdb调试实例:

jdb -connect com.sun.jdi.SocketAttach:hostname=127.0.0.1,port=8631
设置未捕获的java.lang.Throwable
设置延迟的未捕获的java.lang.Throwable
正在初始化jdb...
>
出现异常错误: java.lang.ClassNotFoundException (未捕获)"线程=Thread-2", dalvik.system.BaseDexClassLoader.findClass(), 行=201 bci=84

Thread-2[1] wherei
  [1] dalvik.system.BaseDexClassLoader.findClass (BaseDexClassLoader.java:201), pc = 84
  [2] java.lang.ClassLoader.loadClass (ClassLoader.java:379), pc = 28
  [3] java.lang.ClassLoader.loadClass (ClassLoader.java:312), pc = 1
Thread-2[1] locals
方法参数:
suppressedExceptions = instance of java.util.ArrayList(id=9327)
c = null
本地变量:
name = "com.target.os.ClassName"
cnfe = instance of java.lang.ClassNotFoundException(id=9325)
Thread-2[1]

http://www.lryc.cn/news/45018.html

相关文章:

  • 要和文心一言来一把你画我猜吗?
  • delete[] p->elems和free(p->elems)有什么区别?
  • CAS问题
  • 网络编程socket(下)
  • 华为OD机试题【打折买水果】用 C++ 编码,速通
  • JSON 数据类型
  • Python函数简介
  • 一文读懂 mysql 为什么要两阶段提交以及两阶段提交原理
  • 启动Hadoop报错【Error: JAVA_HOME is not set and could not be found.】
  • 《MySQL系列-InnoDB引擎35》索引与算法-B+树索引的使用
  • 【EHub_tx1_tx2_E100】不止科技NVISTAR ROC 300激光雷达Ubuntu18.04+ROS1ROS2 评测
  • C语言函数大全--d开头的函数
  • 基于springboot实现福聚苑社区团购演示【项目源码】
  • 动静态库的制作
  • QMS-云质-质量软件-客诉,为什么应该用两段式来处理
  • JS:关于邮箱的正则表达式及规则
  • 两句话,ChatGPT帮我写一个打飞机的游戏
  • 计算机图形学14:三维图形的投影变换
  • 【ChatGPT4】王老师零基础《NLP》(自然语言处理)第二课
  • 设计模式之中介者模式在前端的应用
  • 2023年还能入行程序员吗?工作3年以上的黑马老学员怎么说?
  • 接收机的噪声来源与噪声分析
  • Android FrameWork——SystemServer
  • 婴儿推车ASTMF883测试
  • 射频接收机概述
  • 实验三Numpy知识点总结
  • Code Review时学到的技巧之isAssignableFrom
  • IP协议以及相关技术
  • SpringBoot 项目使用 Sa-Token 完成登录认证
  • javaScript 蓝桥杯----梅楼封的一天